Aus irgendeinem Grund konnte ich keine Remoteverbindung zu meinem MySQL-Server herstellen. Ich habe alles versucht und bekomme immer noch Fehler.
root@server1:/home/administrator# mysql -u monty -p -h www.ganganadores.cl
Enter password:
ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using password: YES)
Jetzt habe ich versucht zu rennen
GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX';
GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';`
und immer noch nichts! Was mache ich falsch?
BEARBEITEN : my.cnf
hat die Bindungs-IP auskommentiert.
Antworten:
Um MySQL etwas anderem als localhost auszusetzen, muss die folgende Zeile angezeigt werden
Für MySQL Version 5.6 und niedriger
nicht kommentiert
/etc/mysql/my.cnf
und der IP-Adresse Ihres Computers zugewiesen und kein LoopbackFür MySQL Version 5.7 und höher
nicht kommentiert
/etc/mysql/mysql.conf.d/mysqld.cnf
und der IP-Adresse Ihres Computers zugewiesen und kein LoopbackOder fügen Sie eine hinzu,
bind-address = 0.0.0.0
wenn Sie die IP nicht angeben möchtenStoppen Sie dann MySQL und starten Sie es mit dem neuen Eintrag my.cnf neu. Gehen Sie nach dem Ausführen zum Terminal und geben Sie den folgenden Befehl ein.
Das sollte ungefähr so mit Ihrer tatsächlichen IP in den xxx zurückkommen
Wenn die obige Anweisung korrekt zurückgegeben wird, können Sie Remotebenutzer akzeptieren. Damit ein Remote-Benutzer jedoch eine Verbindung mit den richtigen Berechtigungen herstellen kann, muss dieser Benutzer sowohl im localhost als auch in '%' wie in erstellt werden.
dann,
und schlussendlich,
Wenn Sie nicht denselben Benutzer wie oben erstellt haben, erben Sie bei der lokalen Anmeldung möglicherweise die lokalen Basishost-Berechtigungen und haben Zugriffsprobleme. Wenn Sie den Zugriff von myuser einschränken möchten, müssen Sie die Syntax der GRANT-Anweisung HIER nachlesen. Wenn Sie dies alles durchstehen und immer noch Probleme haben, veröffentlichen Sie einige zusätzliche Fehlerausgaben und die entsprechenden Zeilen von my.cnf.
HINWEIS: Wenn lsof nicht zurückkehrt oder nicht gefunden wird, können Sie es HIER basierend auf Ihrer Linux-Distribution installieren . Sie brauchen kein lsof, um die Dinge zum Laufen zu bringen, aber es ist äußerst praktisch, wenn die Dinge nicht wie erwartet funktionieren.
quelle
lsof -i -P | grep :3306
haben, hat das nicht funktioniert, aber die Remoteverbindung funktioniert ohne diese Bestätigung immer noch einwandfrei. Ignorieren Sie, wenn Sie nicht die richtige Ausgabe sehen.sudo lsof -i -P
viel nützlicher alslsof -i -P
(vorausgesetzt, Sie sind als nicht privilegierter Benutzer angemeldet).lsof -i -P | grep :3306
gibt nichts zurück!Fügen Sie ein paar Punkte zu Apesas ausgezeichnetem Beitrag hinzu:
1) Sie können den folgenden Befehl verwenden, um die IP-Adresse zu überprüfen, die der MySQL-Server abhört
2) Erzwingt
FLUSH PRIVILEGES
das Laden von Grant-Tabellen, wenn die Änderungen aus irgendeinem Grund nicht sofort wirksam werden3) Wenn die Netfilter-Firewall
sudo ufw enable
auf dem MySQL-Server aktiviert ist ( ), gehen Sie wie folgt vor, um Port 3306 für den Remotezugriff zu öffnen:Überprüfen Sie den Status mit
4) Sobald eine Remoteverbindung hergestellt ist, kann diese mithilfe von Befehlen auf dem Client- oder Servercomputer überprüft werden
quelle
sudo ufw status
!!netstat -nlt | grep 3306
kehrt leer zurückMySQL hört nur auf localhost. Wenn wir den Remotezugriff darauf aktivieren möchten, müssen wir einige Änderungen in der Datei my.cnf vornehmen:
Wir müssen die Bindungsadresse auskommentieren und externe Sperrzeilen überspringen:
Nachdem wir diese Änderungen vorgenommen haben, müssen wir den MySQL-Dienst neu starten:
quelle
skip-external-locking
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Vergessen Sie beim Testen unter Windows nicht, Port 3306 zu öffnen.
quelle
Sie verwenden Ubuntu 12 (ziemlich alt)
Öffnen Sie zunächst die Datei /etc/mysql/mysql.conf.d/mysqld.cnf ( /etc/mysql/my.cnf in Ubuntu 14.04 und früheren Versionen)
Suchen Sie unter [mysqld] die Zeile "bind-address = 127.0.0.1" und ändern Sie sie in "bind-address = 0.0.0.0" oder kommentieren Sie sie
Starten Sie dann den Ubuntu MysQL Server neu
systemctl restart mysql.service
Jetzt ermöglicht Ubuntu Server den Remotezugriff auf den MySQL Server. Sie müssen jedoch MySQL-Benutzer so konfigurieren, dass der Zugriff von jedem Host aus möglich ist.
Der Benutzer muss über
'username'@'%'
alle erforderlichen Zuschüsse verfügenFühren Sie den Befehl netstat wie folgt aus, um sicherzustellen, dass der MySQL-Server alle Schnittstellen überwacht.
netstat -tulnp | grep mysql
Hoffe das funktioniert!
quelle