Efter at have postet dette problem, mens jeg arbejdede, indså jeg, at jeg ikke engang var i stand til at pinge til EC2-serveren eller telnet til den. Så noget grundlæggende måtte være galt. Endelig hjalp en ven mig med problemet. Som jeg havde forventet, var problemet meget specifikt for EC2.
Detaljerne er som følger:
Når vi opretter en EC2-instans, får vi en ekstern IP-adresse, der ligner:ec2-XX-XXX-XXX-XX.ap-southeast-1.compute.amazonaws.com
Mens jeg indstillede tilladelserne i mysql, gav jeg tilladelserne til ovenstående IP-adresse, dvs.:
GRANT ALL PRIVILEGES on . to [email protected]'ec2-XX-XXX-XXX-XX.ap-southeast1.compute.amazonaws.com' IDENTIFIED BY 'password';
Dette virker ikke, når du forsøger at kommunikere til en EC2-instans fra en anden lokal EC2-instans. Til dette skal du angive den 'interne ip-adresse' for EC2-instansen, som kan findes ved hjælp af ip-kommandoen:
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
For at få tingene til at fungere korrekt, skal du give tilladelsen til ip-adressen --"XX.XXX.XX.XXX/23", og det burde virke. På samme måde, mens der oprettes forbindelse til "mysql"-databasen, skal værtsnavnet, der gives til mysql-kommandoen, også være den "interne ip-adresse" for værts-EC2-instansen.