无法连接到 MySQL 服务器错误 111 [关闭]

Posted

技术标签:

【中文标题】无法连接到 MySQL 服务器错误 111 [关闭]【英文标题】:Can't connect to MySQL server error 111 [closed] 【发布时间】:2010-11-28 02:18:07 【问题描述】:

我在 linux 机器 IP = 192.168.1.100 上安装了 mysql 服务器,但是当我尝试连接到此 IP 时,它总是错误 (111)。但是使用 localhost 和 127.0.0.1 就可以了。

啤酒@啤酒笔记本电脑# ifconfig | grep "inet 地址" inet 地址:127.0.0.1 掩码:255.0.0.0 inet 地址:192.168.1.100 广播:192.168.1.255 掩码:255.255.255.0 beer@beer-laptop# mysql -ubeer -pbeer -h192.168.1.100 错误 2003 (HY000): 无法连接到“192.168.1.100”上的 MySQL 服务器 (111) beer@beer-laptop# mysql -ubeer -pbeer -hlocalhost 欢迎使用 MySQL 监视器。命令以 ; 结尾或\g。 你的 MySQL 连接 ID 是 160 服务器版本:5.1.31-1ubuntu2(Ubuntu) 输入“帮助”;或 '\h' 寻求帮助。键入 '\c' 以清除缓冲区。 mysql> beer@beer-laptop# mysql -ubeer -pbeer -h127.0.0.1 欢迎使用 MySQL 监视器。命令以 ; 结尾或\g。 您的 MySQL 连接 ID 是 161 服务器版本:5.1.31-1ubuntu2(Ubuntu) 输入“帮助”;或 '\h' 寻求帮助。键入 '\c' 以清除缓冲区。 mysql>

从另一台机器连接它也是错误 111。

another@another-laptop# mysql -ubeer -pbeer -h192.168.1.100 错误 2003 (HY000): 无法连接到“192.168.1.100”上的 MySQL 服务器 (111)

在这种情况下使用 localhost/127.0.0.1 和 192.168.1.100 有什么区别。 我不知道如何从另一台机器连接到这个数据库。

请帮忙。 谢谢。

【问题讨论】:

161 次投票和 51 次标记,浏览量近 50 万次,问题写得很清楚,问题有明确表述,还有几个答案。为什么这首先作为 OT 关闭,为什么它仍然关闭?这显然对某些人有用。 【参考方案1】:

这可能意味着你的 MySQL 服务器只是在监听 localhost 接口。

如果你有这样的行:

bind-address = 127.0.0.1

在您的my.cnf configuration file 中,您应该注释它们(在行首添加一个#),然后重新启动 MySQL。

sudo service mysql restart

当然,要做到这一点,你必须是服务器的管理员。

【讨论】:

显然,他没有skip-networking 行;-) 如何知道mysql my.cnf位置:***.com/questions/2482234/… 但是当您可以从 mysql 工作台连接到它时会发生什么?我有同样的问题。 我遵循了答案中给出的内容,但仍然无法使其正常工作。然后我发现“bind-address”参数在“/etc/mysql/mysql.conf.d/mysqld.cnf”文件中。在那里评论它并且它有效! 较新版本的 ubuntu >= 16.04 可能在 /etc/mysql/mysql.conf.d/myqld.cnf 中有这一行【参考方案2】:

111表示连接被拒绝,这反过来意味着你的mysqld只监听localhost接口。

要更改它,您可能需要查看 my.cnf 文件的 mysqld 部分中的 bind-address 值。

【讨论】:

检查端口号是否有效也是值得的。 :3306:3307 不匹配也会导致 111 错误。 @NXT,我什至不知道 mysql 是否可以监听不同接口上的不同端口,但即使可以,这也是非常不可能的情况(鉴于原始帖子中的症状)。然后可以有防火墙规则等。有很多方法可以实现,但可能性不同...... 并不总是这样。我的 my.cnf 文件没有任何 bind-addressskip-networking 行,但我得到了同样的错误。也没有安装防火墙。没有想法了。 好吧,111 总是意味着连接被拒绝:) 由于其他证据,在这种特殊情况下,仅限本地主机。如果您提供有关您的案例的更多详细信息,我可以提供帮助吗?此外,根据您现在的系统,您可能会将配置分散在多个文件中。 如果我在 mysqld 中没有绑定地址值怎么办?【参考方案3】:

如果之前的所有答案都没有给出任何解决方案, 您应该检查您的用户权限。

如果你能以root 的身份登录到mysql 那么你应该添加这个:

CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY  '***';
GRANT ALL PRIVILEGES ON * . * TO  'root'@'192.168.1.100' IDENTIFIED BY  '***' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

然后尝试使用mysql -ubeer -pbeer -h192.168.1.100 再次连接。它应该可以工作。

【讨论】:

我不认为与用户权限相关的错误会给出错误 111。 它确实有效,我也收到 111 错误。 看起来这是一个比通过注释掉 127.0.0.1 行向整个网络开放 mysql 更好的解决方案。这应该是最好的解决方案。【参考方案4】:

如果您正在运行 cPanel/WHM,请确保 IP 已在防火墙中列入白名单。您还需要将该 IP 添加到您尝试连接的 cPanel 帐户中的远程 SQL IP 列表中。

【讨论】:

一个很好的“判断”来查看是否是导致错误的防火墙是返回错误需要相当长的时间。如果 MySQL 引起问题,响应应该是即时的。 你能解释一下这是怎么做到的吗?

以上是关于无法连接到 MySQL 服务器错误 111 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

OperationalError:(2003,“无法连接到'localhost'上的MySQL服务器([Errno 111]连接被拒绝)”)[关闭]

错误 2003 (HY000): 无法连接到 MySQL 服务器 (111)

无法连接到“XXX.XXX.XXX.XXXX”上的 MySQL 服务器 (111)

将 Django 与 Docker 一起使用时出错 - “无法连接到 '127.0.0.1' (111) 上的 MySQL 服务器”)

Mariadb docker容器无法使用Python连接到主机上的MySQL服务器(111连接被拒绝)

PopSQL 错误:无法通过套接字“/run/mysqld/mysqld.sock”连接到本地 MySQL 服务器(2)[关闭]