Mysql
 sql >> Datenbank >  >> RDS >> Mysql

1130 Host „amazon-ec2-ip“ darf sich nicht mit diesem MySQL-Server verbinden

Nachdem ich dieses Problem gepostet hatte, stellte ich während der Arbeit fest, dass ich nicht einmal in der Lage war, den EC2-Server zu pingen oder ihn per Telnet zu erreichen. Also musste etwas Grundlegendes falsch sein. Endlich hat mir ein Freund bei dem Problem geholfen. Wie ich erwartet hatte, war das Problem sehr spezifisch für EC2.

Die Details lauten wie folgt:

Wenn wir eine EC2-Instance erstellen, erhalten wir eine externe IP-Adresse, die ähnlich ist wie:ec2-XX-XXX-XXX-XX.ap-southeast-1.compute.amazonaws.com

Beim Festlegen der Berechtigungen in mysql habe ich der obigen IP-Adresse die Berechtigungen erteilt, dh:

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

Dies funktioniert nicht, wenn Sie versuchen, von einer anderen lokalen EC2-Instance aus mit einer EC2-Instance zu kommunizieren. Dazu müssen Sie die „interne IP-Adresse“ der EC2-Instanz angeben, die Sie mit dem Befehl ip finden:

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

Damit die Dinge richtig funktionieren, müssen Sie der IP-Adresse die Berechtigung erteilen – „XX.XXX.XX.XXX/23“, und es sollte funktionieren. Ebenso sollte beim Herstellen einer Verbindung zur „mysql“-Datenbank der Hostname, der dem mysql-Befehl bereitgestellt wird, auch die „interne IP-Adresse“ der Host-EC2-Instance sein.