您的位置:首页 > 数据库 > MySQL

配置MySQL服务器使得外网可以连接

2017-11-08 17:52 246 查看
在一台电脑上安装了MySQL服务器后,默认是不允许外网可以连接至该服务器上的MySQL的,不进行额外配置的话可能会出现如下两种连接错误的情况(我用的是Navicat MySQL客户端在Windows上连接Ubuntu上的MySQL数据库)。

图1 端口绑定问题



图2 权限问题



前者是因为默认绑定端口问题,后者则是数据库权限的问题。

解决问题一

首先使用如下命令查看3306端口绑定状态

sudo netstat -an | grep 3306


输出如下图:



如图,3306端口是默认绑定在本地IP 127.0.0.1上的,所以外网无法访问该主机的3306端口。

打开MySQL的配置文件:

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf


找到如下内容的一行并注释掉:

bind-address          = 127.0.0.1


重启MySQL服务

sudo systemctl restart mysql


然后使用如下命令查看端口绑定状态

sudo netstat -an | grep 3306


输出如下图:



解决问题二

问题二是因为MySQL自带的权限控制限制了外网访问MySQL服务器,在Ubuntu主机上使用命令行连接至本地MySQL数据库

sudo mysql -uroot -p[你的密码]


然后选择mysql数据库并查看user表信息

use mysql
select user,host from user


显示如下图



发现root账户只允许localhost访问,所以外网无法访问。

可以使用如下命令给外网访问授权

grant all privileges on *.* to 'root'@'[允许的ip]' identified by '[密码]' with grant option;
flush privileges;


其中[允许的ip]如果设置为%的话则表示所有ip都可以访问,[密码]表示外网访问的密码是什么。比如我设置成所有ip都可访问,密码是root,则命令如下:

grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;


然后再查看表中的信息

select user,host from user;


输出如下:



至此,外网用户就可以访问你的MySQL服务器了。作者在Windows上没有尝试过,但是好像Windows上不会有端口绑定的问题,而且据说windows下连配置文件都没了([尴尬])。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐