无法连接到MySQL服务器错误111


152

我在linux框IP = 192.168.1.100上安装了mysql服务器,但是当我尝试连接到该IP时总是出错(111)。但是使用localhost并且127.0.0.1可以。

beer @ beer-laptop#ifconfig | grep“ inet addr”
          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有何区别。我不知道如何从另一台计算机连接到该数据库。

请帮助。谢谢。

Answers:


263

这可能意味着您的MySQL服务器仅监听localhost接口。

如果您有这样的行:

bind-address = 127.0.0.1

my.cnf配置文件中,应给它们加上注释(在行的开头添加#),然后重新启动MySQL。

sudo service mysql restart

当然,要执行此操作,您必须是服务器的管理员。


6
显然,他没有skip-networking电话;-)
Michael Krelin-hacker

11
如何知道mysql的my.cnf中的位置:stackoverflow.com/questions/2482234/...
西里尔Jacquart

2
但是当您可以从mysql工作台连接到它时会发生什么呢?我也有同样的问题。
George Pamfilis

3
我遵循了答案中给出的内容,但仍然无法使它正常工作。然后,我发现“ bind-address”参数位于“ /etc/mysql/mysql.conf.d/mysqld.cnf”文件中。评论它在那里,它起作用了!
Yahya

3
较新版本的ubuntu> = 16.04可能在
/etc/mysql/mysql.conf.d/myqld.cnf中

38

111表示连接被拒绝,这又意味着您的mysqld仅侦听该localhost接口。

要对其进行更改,您可能需要查看文件部分中的bind-address值。mysqldmy.cnf


还值得检查端口号是否有效。不匹配:3306:3307也可能导致111错误。
NXT

2
@NXT,我什至不知道mysql是否可以在不同接口上的不同端口上侦听,但是即使可以,这也是极不可能的情况(考虑到原始帖子中的症状)。然后可能会有防火墙规则,等等。有很多方法可以实现这一目标,但是可能性有所不同……
Michael Krelin-hacker

并不总是这样。我的my.cnf文件没有任何bind-addressskip-networking行,但我得到同样的错误。也没有安装防火墙。摆脱想法。
Deleet

好吧,111确实总是表示连接被拒绝:)并且由于其他证据,在此特定情况下,仅本地主机。如果您提供有关您的案件的更多详细信息,我可以为您提供帮助吗?另外,根据当今的系统,您可能会将配置分散在多个文件中。
Michael Krelin-黑客

10

如果所有先前的答案都没有提供任何解决方案,则应检查您的用户权限。

如果您可以登录rootmysql,则应添加以下内容:

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。它应该工作。


17
我不认为用户权限相关的错误会给错误111
UFK

1
它确实有效,并且我也遇到111错误。
Borjante

看起来这比通过注释127.0.0.1行向整个网络开放mysql更好。它应该是最好的解决方案。
nyxee

7

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


1
一个很好的“告诉”它是否是引起该错误的防火墙是因为要花费相当长的时间才能返回该错误。如果MySQL引起问题,那么响应应该是即时的。
严峻...

您能解释一下如何完成吗?
用户
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.