问题描述
提示:本文的场景是云服务器上,如果是自己的本地电脑和mysql连接也适用。
背景:两台云服务器在同一个VPC下,同一个安全组下,A能ping通B,但telnet 3306 mysql端口失败。
解决思路和方法:
-
首先看网络通不通,如果不通,请检查路由设置。因为我这里是云服务器的场景,直接查看安全组下是否放行了3306端口。(VPC 内云主机网络互通,所以这里只看安全组就可以,默认可以ping通。)
安全组入站规则设置: 源IP(发起连接的一方) TCP:3306,23 允许
-
设置安全组后,telnet 3306 mysql端口还是失败
telnet 远端主机的ip 3306
-
网络通了后,还是telnet 3306 mysql端口失败,则检查目的主机的防火墙是否关闭,3306端口是否开启。(可见防火墙是关闭的。)
使用下面命令查看3306端口是否对外放开,如果显示的是127.0.0.1:3306
说明3306只绑定了127.0.0.1(localhost),并没有绑定其他地址。
-
修改mysql的配置文件
vim /etc/mysql/mysql.conf.d/mysqld.cnf
在bind-address =127.0.0.1前加入#注释掉,如图所示:
-
使用命令重启mysql后,再次查看端口,可见3306绑定了任意地址
service mysql restart
-
再次telnet连接成功:
telnet 远端主机的ip 3306