Как предоставить удаленный доступ к 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.* для удаленного доступа к базе данных.



Как я могу это сделать?

538   5  

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

    Ничего не найдено.