无法从另一台服务器连接到 MySQL

无法从另一台服务器连接到 MySQL

我在同一个子网上有两台服务器。

  • 192.168.100.1(mysql)
  • 192.168.100.2 (php)

MySQL 似乎在其机器上运行良好,但我似乎无法连接到它。这些都是 ubuntu 机器,iptables 和 ufw 均未运行。以下命令均来自 MySQL 机器本身。这些均无法从.100.2(php) 机器运行。

我的cnf

#bind-address           = 127.0.0.1
bind-address = 192.168.100.1

netstat 说这是真的:

[email protected] /etc/mysql $ netstat -plutn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      8583/sshd       
tcp        0      0 192.168.100.1:3306      0.0.0.0:*               LISTEN      30654/mysqld    
tcp        0      0 0.0.0.0:2828            0.0.0.0:*               LISTEN      29946/monit     
tcp        0      0 0.0.0.0:1167            0.0.0.0:*               LISTEN      23175/cdp       
tcp6       0      0 :::22                   :::*                    LISTEN      8583/sshd  

telnet 说它很好

[email protected] /etc/mysql $ telnet 192.168.100.1 3306
Trying 192.168.100.1...
Connected to 192.168.100.1.
Escape character is '^]'.
[
5.5.40-0ubuntu0.12.04.1&KM~Se$!u??L\hw=gp{<Uvrmysql_native_password

!#08S01Got packets out of orderConnection closed by foreign host.

mysql 客户端说它很好:

[email protected] /etc/mysql $ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.

当我尝试连接时,.100.2我没有得到任何返回,直到超时:

[email protected] /etc/php5/fpm $ mysql -uroot -p -h 192.168.100.1 --connect-timeout 4
Enter password: 
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.100.1' (4)

我可以ping .100.1.100.2盒子里取出亚毫秒级的响应时间。

以下是 MySQL Grant 设置:

mysql> SELECT user,host from mysql.user;
+------------------+--------------+
| user             | host         |
+------------------+--------------+
| root             | 127.0.0.1    |
| root             | 192.168.1.%  |
| root             | 192.168.100.%|
| root             | 192.168.200.%|
| root             | ::1          |
| debian-sys-maint | localhost    |
| example          | localhost    |
| o3backup         | localhost    |
| root             | localhost    |
| root             | voice-mysql  |
+------------------+--------------+
10 rows in set (0.00 sec)

我为所有地方添加了新的授权,但问题仍然存在。

mysql> show grants for 'root'@'%';
+--------------------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                            |
+--------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '...' |
+--------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

更新

事实证明,系统不知何故被我所不知道的系统文件更改所锁定。显然,它阻止了某些非标准的网络操作。老实说,这真令人沮丧,给我这个盒子的人竟然把这件事忘得一干二净。老实说,我不知道他们对它做了什么,甚至他们也记不清了。尽管如此,这里列出的答案对于普通人来说是最全面的故障排除指南。它应该是这些问题之一。

答案1

看起来您Enter password:在从 php 服务器连接到 mysql 服务器时收到了提示,但之后什么都没有了。如果是这样,那么用户的 mysql 用户帐户设置root可能拒绝了连接。查看您的rootmysql 用户帐户并确保Host字段设置为允许连接。

(MySQL)访问被拒绝错误的原因

如果您不知道所连接的计算机的 IP 地址或主机名,则应在用户表中放置一行以“%”作为主机列值。

尝试从客户端计算机连接后,使用 SELECT USER() 查询查看您实际的连接方式。然后将用户表行中的“%”更改为日志中显示的实际主机名。否则,您的系统将变得不安全,因为它允许给定用户名从任何主机进行连接。

我怀疑连接时表格的排序方式会给你带来问题。你可能需要查看访问控制,第 1 阶段:连接验证

答案2

相关内容