Nadat ik dit probleem had gepost, terwijl ik aan het werk was, realiseerde ik me dat ik niet eens naar de EC2-server of telnet kon pingen. Er moest dus iets fundamenteels mis zijn. Eindelijk heeft een vriend me geholpen met het probleem. Zoals ik had verwacht, was het probleem zeer specifiek voor EC2.
De details zijn als volgt:
Wanneer we een EC2-instantie maken, krijgen we een extern IP-adres dat lijkt op:ec2-XX-XXX-XXX-XX.ap-southeast-1.compute.amazonaws.com
Tijdens het instellen van de machtigingen in de mysql verleende ik de machtigingen aan het bovenstaande IP-adres, d.w.z.:
GRANT ALL PRIVILEGES on . to [email protected]'ec2-XX-XXX-XXX-XX.ap-southeast1.compute.amazonaws.com' IDENTIFIED BY 'password';
Dit werkt niet wanneer u probeert te communiceren met een EC2-instantie vanaf een andere lokale EC2-instantie. Hiervoor moet u het 'interne ip-adres' van de EC2-instantie opgeven, die u kunt vinden met het ip-commando:
ip een:
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
Om de zaken correct te laten werken, moet u toestemming verlenen aan het ip-adres --"XX.XXX.XX.XXX/23", en het zou moeten werken. Evenzo, terwijl u verbinding maakt met de "mysql"-database, moet de hostnaam die aan de mysql-opdracht wordt gegeven, ook het "interne ip-adres" van de host EC2-instantie zijn.