无法连接到 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-address
或 skip-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)[关闭]