在服务器之外的地方访问 MYSQL
在服务器之外的地方访问 MYSQL
1.修改服务器防火墙规则
iptables -L 可以查看当前的防火墙规则
iptables -F 可以清空所有防火墙规则
也可以通过云服务器的 UI 界面修改
2.确保 mysql 的监听地址是 0.0.0.0
监听地址是 0.0.0.0 ,表示该 mysql 允许所有 IP 地址进行连接,这是允许远程连接的基础
监听地址是 127.0.0.1,则代表该 mysql 只允许所在服务器本机连接,外网是无法连接的
怎么知道 mysql 的监听地址是多少呢?
Linux 服务器中执行如下命令可以查看:
netstat -nutlp|grep mysql
如果监听的地址不是 0.0.0.0,该怎么办?
因为 mysql 默认是监听 0.0.0.0 的,如果查看监听的不是,则肯定是配置文件中的 bind-address 参数的问题,
需要修改 mysql 的配置文件中的 bind-address 参数,将bind-address=127.0.0.1 修改成 bind-address=0.0.0.0
保存好后,重启 mysql 服务就会生效了。
重启MYSQL
步骤或方法: RedHat Linux (Fedora Core/Cent OS)
1.启动:/etc/init.d/mysqld start
2.停止:/etc/init.d/mysqld stop
3.重启:/etc/init.d/mysqld restart
Debian / Ubuntu Linux
1.启动:/etc/init.d/mysql start
2.停止:/etc/init.d/mysql stop
3.重启:/etc/init.d/mysql restart
3.添加远程连接 mysql 的账号
此步骤是必须要操作的,mysql 本身的用户只能在本机上连接数据库,外网连接的话,需要先添加远程用户并授权。
在 mysql 命令行模式下,或者 phpmyadmin 中执行 sql 语句添加远程连接用户
grant all on *.* to root@'%' identified by '123456';
flush privileges;
命令解释:
*.*
第一个 * 表示库,第二个 * 表示表; *.* 对全部数据库的全部表授权, so.ok 表示只对so这个库中的 ok 表授权root
表示要给哪个用户授权,这个用户可以是存在的用户,也可以是不存在的%
表示允许远程连接的 IP 地址,%代表允许所有 IP 连接,只允许某个IP远程连接,可以写成123.123.123.123
,只允许123.123.123.*这个网段远程连接,可以写成123.123.123.%
123456
:是设置授权用户的连接密码- flush privileges:代表立即刷新权限表,使添加的用户生效
上面三步都设置好了,就可以再次尝试远程连接mysql了。