2009-09-14 95 views
111

我在Linux上安装了mysql服务器IP = 192.168.1.100,但是当我尝试连接到这个IP时,它总是报错(111)。但使用localhost和127.0.0.1即可。无法连接到MySQL服务器错误111

 
[email protected]# ifconfig | grep "inet addr" 
      inet addr:127.0.0.1 Mask:255.0.0.0 
      inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 

[email protected]# mysql -ubeer -pbeer -h192.168.1.100 
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.100' (111) 

[email protected]# mysql -ubeer -pbeer -hlocalhost 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 160 
Server version: 5.1.31-1ubuntu2 (Ubuntu) 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 

mysql> 

[email protected]# mysql -ubeer -pbeer -h127.0.0.1 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 161 
Server version: 5.1.31-1ubuntu2 (Ubuntu) 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer. 

mysql> 

从另一台机器连接,也错误111

 
[email protected]# mysql -ubeer -pbeer -h192.168.1.100 
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.100' (111) 

如何在这种情况下使用localhost/127.0.0.1和192.168.1.100之间的差异。 我不知道如何从另一台机器连接到这个数据库。

请帮忙。 谢谢。

回答

213

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

如果你有这样的台词:

skip-networking 
bind-address = 127.0.0.1 

在你my.cnf configuration file,你应该评论他们(在行的开头加#),并重启MySQL。

​​

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

+6

显然,他没有'skip-networking'这行;-) –

+6

如何知道mysql my.cnf位置:http://stackoverflow.com/questions/2482234/how-to-know-mysql-my- cnf-location –

+0

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

32

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

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

+0

它也值得检查端口号是否有效。不匹配':3306'和':3307'也会导致111错误。 – NXT

+0

@NXT,我甚至不知道mysql是否可以在不同的接口上监听不同的端口,但即使它可以,它也是不太可能的情况(考虑到原始文章中的症状)。然后可以有防火墙规则等。有很多方法可以实现这一点,但可能性有所不同...... –

+0

并不总是意味着这一点。我的'my.cnf'文件没有任何'bind-address'或'skip-networking'这两行,但我得到了同样的错误。没有安装防火墙。跑出想法。 – Deleet

7

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

如果你能为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连接。它应该工作。

+14

我不认为用户权限相关的错误会给错误111. – ufk

+1

它实际上工作,我也得到111错误。 – Borjante

+0

看起来像是通过注释127.0.0.1行来打开mysql到整个网络的更好的解决方案。它应该是最好的解决方案。 – nyxee

6

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

+0

一个很好的“告诉”,看看它是否导致错误的防火墙是,它将需要很长一段时间才能返回错误。如果MySQL导致问题,响应应该是非常即时的。 –

相关问题