sql >> Base de Datos >  >> RDS >> Mysql

1130 El host 'amazon-ec2-ip' no puede conectarse a este servidor MySQL

Después de publicar este problema, mientras trabajaba, me di cuenta de que ni siquiera podía hacer ping al servidor EC2 o telnet. Así que algo básico tenía que estar mal. Finalmente un amigo me ayudó con el problema. Como esperaba, el problema era muy específico de EC2.

Los detalles son los siguientes:

Cuando creamos una instancia EC2, obtenemos una dirección IP externa similar a:ec2-XX-XXX-XXX-XX.ap-southeast-1.compute.amazonaws.com

Mientras configuraba los permisos en mysql, estaba otorgando los permisos a la dirección IP anterior, es decir:

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

Esto no funciona cuando intenta comunicarse con una instancia EC2 desde otra instancia EC2 local. Para ello, debe proporcionar la "dirección IP interna" de la instancia EC2, que se puede encontrar mediante el comando ip:

dirección IP:

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

Para que todo funcione correctamente, debe otorgar el permiso a la dirección IP --"XX.XXX.XX.XXX/23", y debería funcionar. De manera similar, mientras se conecta a la base de datos "mysql", el nombre de host proporcionado al comando mysql también debe ser la "dirección IP interna" de la instancia EC2 del host.