J'essaie de créer un utilisateur MySQL qui ne sera autorisé à se connecter à la base de données MySQL qu'à partir d'un nom d'hôte spécifique.
accorder tout sur db_name. * à 'user_name'@'appserver-lan.mydomain.com' identifié par 'some_passwd'
En vérifiant la table des utilisateurs sur la base de données mysql, je peux voir que l'utilisateur a été créé avec succès:
utiliser mysql; sélectionnez * de l'utilisateur où User = 'nom_utilisateur' et Host = 'appserver-lan.mydomain.com'
ou
afficher les subventions pour 'username'@'appserver-lan.mydomain.com'
Le nom d'hôte que j'ai spécifié est un alias d'un nom amazon-ec2 qui, lorsqu'il est résolu par les serveurs DNS AWS, se traduit par une adresse LAN:
[root @ db_server ~] # hôte appserver-lan.mydomain.com
appserver-lan.mydomain.com est un alias pour ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com ec2-xxx-xxx-xxx-xxx.compute-1.amazonaws.com a l'adresse 10.xxx .xxx.xxx
Le problème est que lorsque j'essaie de me connecter à l'IP LAN de la base de données à partir de ce serveur d'applications, j'obtiens une erreur d'accès refusé, bien que le mot de passe soit correct. La chose étrange ici est que le nom d'hôte affiché dans l'erreur n'est pas le nom d'hôte que j'avais spécifié lors de la création de l'utilisateur:
ERREUR 1045 (28000): accès refusé pour l'utilisateur 'nom_utilisateur' @ ' appserver.mydomain.com ' (en utilisant le mot de passe: OUI)
Donc, ma question est: comment mysql détermine le nom d'hôte du client? Je crois qu'il ne le fait pas par une recherche DNS inversée, puisque j'ai vérifié et qu'il ne pointe pas sur "appserver.mydomain.com" ni sur "appserver-lan.mydomain.com". De plus, le serveur db n'a aucune entrée liée au serveur d'applications sur / etc / hosts.
En résumé, je suis à peu près sûr que c'est un problème de résolution de nom d'hôte, car l'octroi de privilèges pour l'hôte "%" ou l'IP LAN fonctionne très bien.
Des idées sur ce qui me manque?
host -t PTR 10.1.2.3
?