查看端口3306是否开启远程监听!
1 | $ netstat -an | grep 3306 |
如果是上面这样0 127.0.0.1:3306
或0 :::3306
证明只在本机回路里监听,修改mysql配置文件/etc/mysql/my.cnf
(如果你的配置文件不在这个目录,你可以用find / -name "my.cnf"
命令查找出它的位置)
1 | $ vi /etc/mysql/my.cnf |
但是即使你的 mysql 服务已经启动并成功运行,你也有可能遇到查不到3306端口的情况!如下:
1 | $ netstat -an | grep 3306 |
这是因为在 mysql 配置文件my.cnf
中存在这样一段配置:
1 | # Don't listen on a TCP/IP port at all. This can be a security enhancement, |
参数skip-networking起的作用是让 mysql 不再监听 TCP/IP 端口!此时,与mysqld的所有互动都必须通过Unix套接字或命名管道进行。需要将skip-networking注释掉,才能重新使 mysql 监听3306端口!
将参数注释后,重新尝试第一步,你可以看到3306端口的监听状况!
接下来向防火墙添加3306规则
1 | $ iptables -A INPUT -i eth0 -p tcp --dport 3306 -j ACCEPT |
设置mysql用户的远程访问权限(假设开放
test
用户为远程访问用户)
1 | $ mysql -u root -p |