Setelah memposting masalah ini, saat saya sedang bekerja, saya menyadari bahwa saya bahkan tidak dapat melakukan ping ke server EC2 atau telnet ke sana. Jadi sesuatu yang mendasar pasti salah. Akhirnya seorang teman membantu saya mengatasi masalah tersebut. Seperti yang saya duga, masalahnya sangat spesifik untuk EC2.
Detailnya adalah sebagai berikut:
Saat kami membuat instance EC2, kami mendapatkan alamat IP eksternal yang mirip dengan:ec2-XX-XXX-XXX-XX.ap-southeast-1.compute.amazonaws.com
Saat mengatur izin di mysql, saya memberikan izin ke alamat IP di atas, yaitu:
GRANT ALL PRIVILEGES on . to [email protected]'ec2-XX-XXX-XXX-XX.ap-southeast1.compute.amazonaws.com' IDENTIFIED BY 'password';
Ini tidak berfungsi saat Anda mencoba berkomunikasi dengan instans EC2 dari instans EC2 lokal lainnya. Untuk ini, Anda perlu memberikan 'alamat ip internal" dari instance EC2, yang dapat ditemukan menggunakan perintah 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
Agar semuanya berfungsi dengan benar, Anda perlu memberikan izin ke alamat ip --"XX.XXX.XX.XXX/23", dan itu akan berfungsi. Demikian pula, saat menghubungkan ke database "mysql", nama host yang diberikan ke perintah mysql juga harus menjadi "alamat ip internal" dari instans EC2 host.