Mysql
 sql >> Base de données >  >> RDS >> Mysql

1130 L'hôte 'amazon-ec2-ip' n'est pas autorisé à se connecter à ce serveur MySQL

Après avoir posté ce problème, alors que je travaillais, j'ai réalisé que je n'étais même pas capable de faire un ping vers le serveur EC2 ou telnet vers celui-ci. Donc, quelque chose de fondamental devait être faux. Enfin un ami m'a aidé à résoudre le problème. Comme je m'y attendais, le problème était très spécifique à EC2.

Les détails sont les suivants :

Lorsque nous créons une instance EC2, nous obtenons une adresse IP externe similaire à :ec2-XX-XXX-XXX-XX.ap-southeast-1.compute.amazonaws.com

Lors de la définition des autorisations dans mysql, j'accordais les autorisations à l'adresse IP ci-dessus, c'est-à-dire :

GRANT ALL PRIVILEGES on . to [email protected]'ec2-XX-XXX-XXX-XX.ap-southeast1.compute.amazonaws.com' IDENTIFIED BY 'password';

Cela ne fonctionne pas lorsque vous essayez de communiquer avec une instance EC2 à partir d'une autre instance EC2 locale. Pour cela, vous devez fournir "l'adresse IP interne" de l'instance EC2, qui peut être trouvée à l'aide de la commande ip :

ip a :

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host 
valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 12:31:41:02:58:47 brd ff:ff:ff:ff:ff:ff
inet **XX.XX.XX.XXX/23** brd YY.YYY.YY.YYY scope global eth0
inet6 fe80::1031:41ff:fe02:5847/64 scope link 
valid_lft forever preferred_lft forever

Pour que les choses fonctionnent correctement, vous devez accorder l'autorisation à l'adresse IP --"XX.XXX.XX.XXX/23", et cela devrait fonctionner. De même, lors de la connexion à la base de données "mysql", le nom d'hôte fourni à la commande mysql doit également être "l'adresse IP interne" de l'instance EC2 hôte.