Как предоставить удаленный доступ к MySQL для всей подсети?
Я могу легко предоставить доступ к одному IP-адресу с помощью этого кода:
$ mysql -u root -p
Enter password:
mysql> use mysql
mysql> GRANT ALL ON *.* to [email protected]'192.168.1.4' IDENTIFIED BY 'your-root-password';
mysql> FLUSH PRIVILEGES;
Но мне нужно разрешить всю подсеть 192.168.1. * удаленно обращаться к базе данных.
Как я могу это сделать?
Ответы
Ответ 1
РЕДАКТИРОВАТЬ: рассмотрите возможность поиска и продвижения Malvineous на этой странице. Netmasks - гораздо более элегантное решение.
Просто используйте знак процента в качестве подстановочного знака в IP-адресе.
От http://dev.mysql.com/doc/refman/5.1/en/grant.html
Вы можете указать подстановочные знаки в имени хоста. Например, [email protected]'%.example.com'
применяется к user_name
для любого хоста в домене example.com
, а [email protected]'192.168.1.%'
применяется к user_name
для любого хоста в подсети класса 192.168.1
.
Ответ 2
Это похоже, что вы также можете использовать сетевую маску, например
GRANT ... TO 'user'@'192.168.0.0/255.255.255.0' IDENTIFIED BY ...
Ответ 3
Вы просто использовали бы "%" в качестве своего подстановочного знака следующим образом:
GRANT ALL ON *.* to [email protected]'192.168.1.%' IDENTIFIED BY 'your-root-password';
Ответ 4
mysql> GRANT ALL ON *.* to [email protected]'192.168.1.%' IDENTIFIED BY 'your-root-password';
Символом подстановки является "%" вместо "*"
Ответ 5
Просто примечание об особенностях, с которыми я столкнулся:
Рассмотрим:
db server: 192.168.0.101
web server: 192.168.0.102
Если в mysql.user задан пользователь с именем 'user'@'192.168.0.102'
с паролем 1 и другим 'user'@'192.168.0.%'
с паролем2,
тогда
если вы попытаетесь подключиться к серверу db с веб-сервера как "пользователь" с паролем2,
это приведет к ошибке "Доступ запрещен", поскольку для проверки подлинности подстановочного символа 'user'@'192.168.0.%'
используется идентификатор IP 'user'@'192.168.0.102'
.