Estou tentando criar um usuário MySQL que só poderá se conectar ao banco de dados MySQL a partir de um nome de host específico.
conceda tudo no db_name. * para 'user_name'@'appserver-lan.mydomain.com' identificado por 'some_passwd'
Ao verificar a tabela de usuário no banco de dados mysql, posso ver que o usuário foi criado com sucesso:
use mysql; selecione * do usuário em que Usuário = 'nome_do_usuário' e Host = 'appserver-lan.mydomain.com'
ou
mostre concessões para 'nomedeusuário'@'appserver-lan.mydomain.com'
O nome do host que eu especifiquei é um alias para um nome amazon-ec2, que quando resolvido pelos servidores DNS da AWS resulta em um endereço LAN:
[root @ db_server ~] # host appserver-lan.mydomain.com
appserver-lan.mydomain.com é um alias para ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com tem o endereço 10.xxx .xxx.xxx
O problema é que, quando tento conectar-me ao IP da LAN do banco de dados desse appserver-lan, recebo um erro de acesso negado, embora a senha esteja correta. O estranho aqui é que o nome do host mostrado no erro não é o nome do host que eu havia especificado quando o usuário foi criado:
ERRO 1045 (28000): acesso negado para o usuário 'user_name' @ ' appserver.mydomain.com ' (usando a senha: YES)
Então, minha pergunta é: como o mysql determina o nome do host do cliente? Acredito que isso não seja feito através de uma pesquisa reversa de DNS, pois verifiquei e não aponta para "appserver.mydomain.com" nem para "appserver-lan.mydomain.com". Além disso, o servidor db não possui entradas relacionadas ao appserver em / etc / hosts.
Resumindo, tenho certeza de que é um problema de resolução de nome de host, pois conceder privilégios para o host "%" ou para o IP da LAN funciona perfeitamente.
Alguma idéia do que estou perdendo?
host -t PTR 10.1.2.3
?