我知道这个问题看起来和许多其他问题重复,但在你给我差评之前,我已经阅读了其他相关问题,但没有解决我的问题。请查看我的环境:
$ ps -Af | grep mysqld
mysql 901 1 0 10:11 ? 00:00:00 /usr/sbin/mysqld
ubuntu 3229 2542 0 10:13 pts/0 00:00:00 grep --color=auto mysqld
更多输出:
# netstat -lnp | grep mysql
tcp 0 0 0.0.0.0:3306
unix 2 [ ACC ] STREAM LISTENING 19274 901/mysqld /var/run/mysqld/mysqld.sock
我认为这也很有用:
$ cat /etc/mysql/mysql.conf.d/mysqld.cnf | grep bind-address
bind-address = 0.0.0.0
没有激活跳过网络选项,但即便如此,我仍然可以通过本地套接字连接访问 MySQL!
已将 3306 添加到 ufw 允许列表,甚至尝试在禁用 ufw 的情况下进行连接。
127.0.0.1 或我的 LAN IP 192.168.1.100 或 0.0.0.0 都不起作用,我一直收到相同的输出错误:
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (97)
这是端口 3306 上的 nmap:
# nmap -sS -O -p3306 127.0.0.1
PORT STATE SERVICE
3306/tcp open mysql
telnet 输出:
$ telnet 127.0.0.1 3306
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
[
5.7.21-0ubuntu0.17.10.1!5GAC"?0)kLQBLmysql_native_passwordConnection closed by foreign host.
error.log 中有几行有趣的内容:
2018-04-12T13:28:58.588887Z 0 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
2018-04-12T13:28:58.588895Z 0 [Note] - '0.0.0.0' resolves to '0.0.0.0';
2018-04-12T13:28:58.588919Z 0 [Note] Server socket created on IP: '0.0.0.0'.
2018-04-12T13:28:58.593960Z 0 [Note] Event Scheduler: Loaded 0 events
2018-04-12T13:28:58.594091Z 0 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.7.21-0ubuntu0.17.10.1' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu)
在我看来,它应该可以正常工作...欢迎任何帮助!
=)
[更新]
添加了请求后的 iptables 输出。# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
答案1
注释掉 bind-address 行。注释掉该行将强制 MySQL 服务器接受连接,无论来源如何。理论上设置 0.0.0.0 应该可以达到同样的效果,但我个人以前遇到过类似的问题。
注释掉绑定地址行意味着不会对更改是否生效产生疑问。评论一下进展如何,我们会找到解决方案