3306端口没有监听?无法远程连接到 MySQL

Posted

技术标签:

【中文标题】3306端口没有监听?无法远程连接到 MySQL【英文标题】:Port 3306 not listening? Can't connect to MySQL remotely 【发布时间】:2017-11-20 17:01:27 【问题描述】:

我正在尝试使用 pymysql 远程连接到 MySQL,但收到错误消息:

(2003, "Can't connect to MySQL server on 'ip address' ([WinError 10061] 
No connection could be made because the target machine actively refused it)")

在我的 my.cnf 文件中,我将绑定地址设置为 0.0.0.0 并且不存在跳过网络。 运行“sudo netstat -atn”显示端口 3306 仅在 localhost 上侦听:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN

我的防火墙允许来自 3306 的流量:

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/udp                     ALLOW       Anywhere
80/udp                     ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
443/udp                    ALLOW       Anywhere
3306/tcp                   ALLOW       Anywhere
3306/udp                   ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
22/udp (v6)                ALLOW       Anywhere (v6)
80/udp (v6)                ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
443/udp (v6)               ALLOW       Anywhere (v6)
3306/tcp (v6)              ALLOW       Anywhere (v6)
3306/udp (v6)              ALLOW       Anywhere (v6)

我已多次重新启动所有内容。我不认为这是 MySQL 身份验证问题。我已将用户主机设置为“%”。如何设置服务器监听 3306 上的任何地址,而不仅仅是 127.0.0.1?

编辑: 这是 'ps auxf | 的输出grep mysqld ':

root     15493  0.0  0.4  11988  2072 pts/0    S+   12:25   0:00          \_ 
grep --color=auto mysqld
root     25057  0.0  0.3   4448  1540 tty1     S    Jun13   0:00      \_ 
/bin/sh /usr/bin/mysqld_safe --skip-grant-tables
mysql    25415  0.1  8.8 821124 44224 tty1     Sl   Jun13   8:04          \_ 
/usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-
dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --log-
error=/var/log/mysql/error.log --pid-file=/var/run/mysqld/mysqld.pid --
socket=/var/run/mysqld/mysqld.sock --port=3306
mysql    15361  0.2  7.4 380788 37416 ?        Ssl  12:24   0:00 
/usr/sbin/mysqld
15042  0.0  7.4 380788 37164 ?        Ssl  12:21   0:00 /usr/sbin/mysql                            
d

【问题讨论】:

防火墙...问题... 据我所知,您为客户端提供的 IP/主机名是“IP 地址”。介意显示您用于连接的命令/配置吗? Can't connect to MySQL server on 'localhost' (10061)的可能重复 在您的 my.cnf 文件中是 !includedir 指令吗?该目录中的文件可能会覆盖 my.cnf 中的设置。 它包含这一行 '!includedir /etc/mysql/conf.d/'。在该目录中包含 .keepme、mysqld_safe_syslog.cnf。注释掉该行没有任何效果。 【参考方案1】:

10061WSAECONNREFUSED, 'connection refused',这意味着 firewall (unlikely) 或者更可能没有在您尝试连接的 IP:port 上监听。

【讨论】:

它似乎只在听本地主机,我该如何改变它。我认为'bind-address'用于设置我必须设置为'0.0.0.0' 127.0.0.1 // 绑定地址

以上是关于3306端口没有监听?无法远程连接到 MySQL的主要内容,如果未能解决你的问题,请参考以下文章

windows开启3306端口访问mysql

mysql 登录权限

SSH端口转发

无法连接到远程 MySQL 服务器 (10061)

使用 XAMPP 连接到端口 3306 mysql 工作台的问题

如何让mysql以root用户远程登陆mysql数据库