Ich versuche, eine Verbindung zu MySQL herzustellen, indem ich den Befehl
mysql -h 127.0.0.1
Es kommt mit dem Fehler
ERROR 1045 (28000): Access denied for user 'root'@'mydomain.com' (using password: NO)
Warum wird 127.0.0.1 in meinen Domänennamen umgewandelt und wie kann ich das beheben?
Es funktioniert jedoch, wenn ich keinen Host angebe (und dementsprechend, wenn „localhost“ angegeben ist).
Bearbeiten: Es scheint, dass es bei Verwendung von TCP in den Domänennamen aufgelöst wird, daher schlägt es auch bei Verwendung von fehl
mysql -h localhost --protocol=TCP
Bearbeiten: Wenn ich „skip-name-resolve“ verwende, erhalte ich eine ähnliche Ausgabe, außer dass mydomain.com
durch ersetzt wird . x.x.x.x
Dies ist die öffentliche IP von mydomain.com
.
Antwort1
Ich hatte Masquerading für alle externen Pakete (auch auf lo). Das Entfernen/Bearbeiten der iptable -t nat POSTROUTING
Regeln hat das Problem behoben.
Antwort2
Dies wird höchstwahrscheinlich durch einen Eintrag in der Hosts-Datei verursacht.
Antwort3
Vielleicht lauscht MySQL nur auf Ihrer öffentlichen IP und nicht auf 0.0.0.0?
Antwort4
1) Überprüfen Sie /etc/hosts und stellen Sie sicher, dass 127.0.0.1 nur auf localhost und nicht auf mydomain.com verweist. mydomain.com sollte mit der tatsächlichen IP-Adresse des Servers und nicht mit localhost.localdomain verknüpft sein.
2) Es sieht auch so aus, als hätten Sie das Passwort für root auf Ihrer MySQL-Instanz festgelegt (eigentlich ist das eine gute Sache). Wir empfehlen, den Schalter „-p“ zu Ihrem Login hinzuzufügen, damit es wie folgt aussieht:
mysql -h localhost -p
Sie werden dann aufgefordert, das Passwort für root einzugeben. Ich hoffe, das hilft.