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

wea*_*ock 145 mysql linux mysql-error-2003

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

beer@beer-laptop# 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

beer@beer-laptop# mysql -ubeer -pbeer -h192.168.1.100
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.100' (111)

beer@beer-laptop# 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> 

beer@beer-laptop# 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.

another@another-laptop# 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之间的区别.我不知道如何从另一台机器连接到这个数据库.

请帮忙.谢谢.

Pas*_*TIN 249

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

如果你有这样的行:

bind-address = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

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

sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)

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

  • 如何知道mysql my.cnf的位置:http://stackoverflow.com/questions/2482234/how-to-know-mysql-my-cnf-location (10认同)
  • 显然,他没有`skip-networking`线;-) (6认同)
  • 我按照答案中给出的内容但仍无法使其工作.然后我发现"bind-address"参数位于"/etc/mysql/mysql.conf.d/mysqld.cnf"文件中.在那边评论它,它工作了! (3认同)
  • 较新版本的ubuntu> = 16.04可能在/etc/mysql/mysql.conf.d/myqld.cnf中有此行 (3认同)
  • 但是当您可以从mysql工作台连接到它时会发生什么?我也有同样的问题。 (2认同)
  • 这是在我的 Ubuntu 18.1 机器上的`/etc/mysql/mysql.conf.d/mysqld.cnf` (2认同)

Mic*_*ker 38

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

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

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

小智 9

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

如果你可以登录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 ;
Run Code Online (Sandbox Code Playgroud)

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

  • 我不认为用户权限相关的错误会给出错误111. (17认同)

小智 7

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

  • 一个很好的“判断”是否是防火墙导致错误的方法是,返回错误需要相当长的时间。如果 MySQL 引起问题,响应应该几乎是即时的。 (4认同)