现象:Navicat通过SSH能连接远程mysql数据库,SSH也能连接。安全组已对端口开放,远程服务器上MySQL数据库已对root授权为%,远程服务器防火墙未开启。问题:telnet 远程IP 3306 无法连接;JDBC无法连接;navicat直接连接无法连接,本地终端通过mysql -uroot -h远程IP -p无法连接。
产生问题原因:3306端口未开放
解决方法:1,查看3306端口是否开放
netstat -an|grep 3306
或者 netstat -nltp
查看local Address是否为127.0.0.1:3306 是的话表示端口未开启
二、修改访问权限
进入目录“etc/mysql/mysql.conf.d/”,如下图所示:
在这个目录下,有一个配置文件“mysqld.cnf”
打开这个配置文件:
sudo vim mysqld.cnf
文件打开后有一大段注释说明,不用去管它,直接看到下图中的部分:
注意上图中的第一行红色的注释:
“By default we only accept connections from localhost”,这几句话的意思是说“在默认情况下我们只允许本地服务访问MySQL”,所以我们需要注释掉下方那条配置,直接在它前面加上一个井号即可:
# bind-address = 127.0.0.1
如下图所是,这条配置也变成了注释:
拓展一下思路,如果我们出于安全考虑,希望限制只有某台应用服务器可以访问MySQL的话,那么其实就需要调整这条配置项就可以了。
三、修改端口号
还是这个配置文件,看到这个配置文件的中间部分的配置项:
我们需要在其中增加一条端口配置:
port = 3306
加完以后整个配置文件看起来是这样的:
修改完文件之后记得保存。