在服务器之外的地方访问 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了。

posted @ 2020-12-02 15:16  zolmk  阅读(120)  评论(0编辑  收藏  举报