Я пытаюсь создать пользователя MySQL, которому будет разрешено подключаться к базе данных MySQL только с определенного имени хоста.
предоставить все в db_name. * для user_name'@'appserver-lan.mydomain.com, идентифицированного как some_passwd
Проверяя пользовательскую таблицу в базе данных mysql, я вижу, что пользователь был успешно создан:
использовать mysql; выберите * от пользователя, где User = 'user_name' и Host = 'appserver-lan.mydomain.com'
или
показать гранты для 'username'@'appserver-lan.mydomain.com'
Указанное мною имя хоста является псевдонимом имени amazon-ec2, которое при разрешении DNS-серверами AWS приводит к адресу LAN:
[root @ db_server ~] # хост appserver-lan.mydomain.com
appserver-lan.mydomain.com является псевдонимом для ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com имеет адрес 10.xxx .xxx.xxx
Проблема в том, что когда я пытаюсь подключиться к IP-адресу локальной сети базы данных с этого appserver-lan, я получаю сообщение об ошибке отказа в доступе, хотя пароль правильный. Странная вещь здесь в том, что имя хоста, показанное в ошибке, не является именем хоста, которое я указал при создании пользователя:
ОШИБКА 1045 (28000): доступ запрещен для пользователя 'user_name' @ ' appserver.mydomain.com ' (используя пароль: ДА)
Итак, мой вопрос: как mysql определяет имя хоста клиента? Я полагаю, что это не происходит при обратном поиске DNS, так как я проверил и не указывает ни на appserver.mydomain.com, ни на appserver-lan.mydomain.com. Кроме того, на сервере базы данных нет записей, связанных с сервером приложений в / etc / hosts.
Подводя итог, я почти уверен, что это проблема разрешения имени хоста, так как предоставление привилегий для хоста "%" или для IP-адреса локальной сети работает просто отлично.
Есть идеи о том, что мне не хватает?
host -t PTR 10.1.2.3
?