目前云炙手可热,正好公司有个项目把mysql放到了云上。内网访问Mysql的时候遇到一点小问题。记录之。
1.客户端本地IP
D:\>ipconfig|find "IPv4"
IPv4 Address. . . . . . . . . . . : 192.168.0.98
2.访问云上的Mysql(62.210.79.*为mysql的IP)
D:\>mysql -utest -ppasswd -h 62.210.79.* -P3306
Warning: Using a password on the command line interface can be insecure.
ERROR 1130 (HY000): Host '61.163.253.*' is not allowed to connect to this MySQL server
错误很明显是Mysql服务端没有允许这个(61.163.253.*)IP ,访问Mysql。
3.登录mysql主机,查询mysql.user表。确保用户有权限登录。
mysql> select host, user from mysql.user where user='test';
+---------------+-------+
| host | user |
+---------------+-------+
| 192.168.0.98 | test |
+---------------+-------+
1 row in set (0.00 sec)
通过ipconfig查看客户端的IP是192.168.0.98,这个IP(61.163.253.*)是那来的呢?
原来:这是个云上的mysql。
而客户端是通过代理访问外网的。被mysql拒绝的IP是防火墙对外映射的IP.
把这个IP更新到mysql的user表中。就可以在内网访问云上的Mysql了。当然还需要防火墙允许访问云的IP地址。
这种情况下怎么限制内网的IP登录云上的Mysql呢?看来是没法直接在Mysql中进行限制了。
目前只有在防火墙上增加策略允许指定的IP访问云上的Mysql了。