在多NIC系统上仅拒绝一个IP的mysql访问
我有个奇怪的问题。我们有一个ubuntu 12.04服务器和2个NIC。一个是公共的172.30.1.1,另一个是私有的192.168.1.1。我们有一个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
/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,重新标记以包含主机
文件。我认为这应该是一个问题