如何授予远程访问整个子网的MySQL?
我可以使用此代码轻松授予对一个IP的访问权限:
$ mysql -u root -p Enter password: mysql> use mysql mysql> GRANT ALL ON *.* to root@'192.168.1.4' IDENTIFIED BY 'your-root-password'; mysql> FLUSH PRIVILEGES;
但我需要允许整个子网192.168.1。*远程访问数据库。
我怎样才能做到这一点?
编辑:考虑看和upvoting Malvineous在这个页面上的答案。 networking掩码是一个更优雅的解决scheme。
只需在IP地址中使用百分号作为通配符即可。
从http://dev.mysql.com/doc/refman/5.1/en/grant.html
您可以在主机名称中指定通配符。 例如,
user_name@'%.example.com'
.example.com
user_name@'192.168.1.%'
适用于example.com
域中任何主机的user_name@'192.168.1.%'
,而user_name@'192.168.1.%'
适用于192.168.1
C类子网中的任何主机的user_name
。
它看起来像你也可以使用networking掩码 ,例如
GRANT ... TO 'user'@'192.168.0.0/255.255.255.0' IDENTIFIED BY ...
你可以像这样使用'%'作为你的通配符:
GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';
mysql> GRANT ALL ON *.* to root@'192.168.1.%' IDENTIFIED BY 'your-root-password';
通配符是“%”而不是“*”
只是我所面临的一个特点的说明:
考虑:
db server: 192.168.0.101 web server: 192.168.0.102
如果您在mysql.user中将用户定义为'user'@'192.168.0.102'
与password1,另一个'user'@'192.168.0.%'
与password2,
然后,
如果您尝试使用password2作为“user”从Web服务器连接到数据库服务器,
它会导致一个“访问被拒绝”的错误,因为单个'user'@'192.168.0.102'
authentication用于通配符'user'@'192.168.0.%'
authentication。