Po odeslání tohoto problému, když jsem pracoval, jsem si uvědomil, že jsem nebyl schopen ani ping na server EC2 nebo telnet na něj. Něco základního tedy muselo být špatně. Nakonec mi s problémem pomohl kamarád. Jak jsem očekával, problém byl velmi specifický pro EC2.
Podrobnosti jsou následující:
Když vytvoříme instanci EC2, získáme externí IP adresu, která je podobná:ec2-XX-XXX-XXX-XX.ap-southeast-1.compute.amazonaws.com
Při nastavování oprávnění v mysql jsem uděloval oprávnění výše uvedené IP adrese, tj.:
GRANT ALL PRIVILEGES on . to [email protected]'ec2-XX-XXX-XXX-XX.ap-southeast1.compute.amazonaws.com' IDENTIFIED BY 'password';
Při pokusu o komunikaci s instancí EC2 z jiné místní instance EC2 to nefunguje. K tomu musíte zadat „interní IP adresu“ instance EC2, kterou lze nalézt pomocí příkazu 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
Aby věci fungovaly správně, musíte udělit oprávnění k IP adrese --"XX.XXX.XX.XXX/23" a mělo by to fungovat. Podobně při připojování k databázi „mysql“ by název hostitele poskytnutý příkazu mysql měl být také „interní IP adresou“ hostitelské instance EC2.