Как предоставить удаленный доступ к 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.* для удаленного доступа к базе данных.
Как я могу это сделать?
5 ответов:
EDIT: рассмотрите возможность смотреть и голосовать Malvineousответ на этой странице. Сетевые маски-это гораздо более элегантное решение.
просто используйте знак процента в качестве подстановочного знака в IP-адресе.
от http://dev.mysql.com/doc/refman/5.1/en/grant.html
в имени хоста можно указать подстановочные знаки. Например,
user_name@'%.example.com'относится кuser_nameдля любого хоста вexample.comдомен, иuser_name@'192.168.1.%'относится кuser_nameдля любого хоста в192.168.1подсети класса C.
Это похоже, вы также можете использовать маску, например,
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'@'192.168.0.102'с паролем 1 и другой'user'@'192.168.0.%'С password2,затем,
если вы пытаетесь подключиться к серверу БД с веб-сервера как "пользователь" с password2,
это приведет к ошибке "отказано в доступе", потому что один IP
'user'@'192.168.0.102'аутентификация используется поверх подстановочного знака'user'@'192.168.0.%'проверка подлинности.
Comments