在多NIC系统上仅拒绝一个IP的mysql访问

在多NIC系统上仅拒绝一个IP的mysql访问,mysql,hosts,Mysql,Hosts,我有个奇怪的问题。我们有一个ubuntu 12.04服务器和2个NIC。一个是公共的172.30.1.1,另一个是私有的192.168.1.1。我们有一个MySQL服务器正在运行。在/etc/mysql/my.conf中,我们有绑定地址=0.0.0.0 将创建一个表并授予特权 CREATE DATABASE db; GRANT ALL ON db.* TO 'user0'@'%' IDENTIFIED BY 'password'; GRANT ALL ON db.* TO 'user0'@'lo

我有个奇怪的问题。我们有一个ubuntu 12.04服务器和2个NIC。一个是公共的172.30.1.1,另一个是私有的192.168.1.1。我们有一个MySQL服务器正在运行。在
/etc/mysql/my.conf
中,我们有
绑定地址=0.0.0.0

将创建一个表并授予特权

CREATE DATABASE db;
GRANT ALL ON db.* TO 'user0'@'%' IDENTIFIED BY 'password';
GRANT ALL ON db.* TO 'user0'@'localhost' IDENTIFIED BY 'password';
主机名是“myhost”,它位于
/etc/hostname
中<代码>/etc/hosts具有

127.0.0.1       localhost
127.0.1.1       myhost
192.168.1.1     myhost
当我连接172.30.1.1时,一切正常。但是当我使用192.168.1.1时,访问被拒绝。
mysql-h192.168.1.1-uuser0-ppassword
错误1045(28000):用户“user0”@“myhost”的访问被拒绝(使用密码:是)
我有这样的用户表

    mysql> SELECT user, host FROM mysql.user;
    +------------------+-----------+
    | user             | host      |
    +------------------+-----------+
    | user0            | %         |
    | root             | 127.0.0.1 |
    | root             | ::1       |
    |                  | localhost |
    | debian-sys-maint | localhost |
    | user0            | localhost |
    | root             | localhost |
    |                  | myhost    |
    | root             | myhost    |
    +------------------+-----------+
我观察到的区别是,我在
/etc/hosts
文件中有
192.168.1.1 myhost
行;不是172.30.1.1。如果我删除该行或在IP之后更改主机名,它将正常工作。如果我将
172.30.1.1 myhost
添加到
/etc/hosts
,则我无法连接172 IP。如何解释这一点?

通常匿名用户(空用户名)会产生这样的效果。在
mysql.user
表中查找匹配项时,首先找到
'@myhost
(因为
'
匹配每个用户),并且忽略
'user0'@%

最好的做法是删除空用户名。

我不认为您可以在主机文件中为一个主机名添加多个ip,重新标记以包含
主机
文件。我认为这应该是一个问题