无法从其他服务器连接到MySQL

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

  • 192.168.100.1(mysql
  • 192.168.100.2(php)

MySQL似乎运行良好,但我似乎无法连接到它。 这些都是Ubuntu的盒子,iptables和ufw没有运行。 以下命令全部来自MySQL盒子本身。 这些工作都不在.100.2 (php)框中。

my.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框但子ms响应时间。

这是MySQL的授予设置:

 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) 

更新

事实certificate,系统以某种方式locking了我没有意识到的系统文件的变化。 显然它阻止了某些不是标准的networking操作。 这真是令人沮丧,给了我这个盒子的同一个人忘了这一切。 我真的不知道他们做了什么,甚至不记得。 尽pipe如此,这里列出的答案是对于普通人最彻底的问题解决指南。 应该是这些问题之一。

它看起来像从PHP服务器连接到您的MySQL服务器时得到Enter password:提示,但没有任何后。 如果是这样,那么root用户的mysql用户帐户设置可能会拒绝连接。 看看你的root mysql用户帐户,并确保Host字段设置为允许连接。

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

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

尝试从客户机连接后,使用SELECT USER()查询来查看您是如何连接的。 然后将用户表行中的'%'更改为日志中显示的实际主机名。 否则,您的系统将处于不安全状态,因为它允许来自任何主机的给定用户名的连接。

我怀疑当你连接时,表格sorting的方式导致你的问题。 您可能想要查看访问控制,第1阶段:连接validation