Fernzugriff aktivieren (gewähren) Startseite / Tutorials / Mysql / Fernzugriff aktivieren (Grant) Wenn Sie versuchen, sich von einem entfernten Rechner aus mit Ihrem Mysql-Server zu verbinden, und eine Fehlermeldung wie die folgende erhalten, ist dieser Artikel für Sie.
FEHLER 1130 (HY000): Der Host '1.2.3.4' darf keine Verbindung zu diesem MySQL-Server
mysql-Konfiguration ändern
Beginnen Sie mit der Bearbeitung der mysql-Konfigurationsdatei
vim /etc/mysql/my.cnf
Kommentieren Sie die folgenden Zeilen aus.
#bind-address = 127.0.0.1
#skip-networking
Wenn Sie die Zeile skip-networking nicht finden, fügen Sie sie hinzu und kommentieren Sie sie aus.
Starten Sie den mysql-Server neu.
~ /etc/init.d/mysql restart
GRANT-Privileg ändern
Sie werden vielleicht überrascht sein, dass Sie auch nach der obigen Änderung keinen Fernzugriff erhalten oder zwar Zugriff erhalten, aber nicht auf alle Datenbanken zugreifen können.
Standardmäßig ist der lokale Zugriff auf den mysql-Server mit dem von Ihnen verwendeten Benutzernamen und Passwort möglich. Daher müssen Sie die Berechtigung aktualisieren. (Wenn Sie einen separaten Benutzer für diesen Zweck erstellen möchten, können Sie CREATE USER 'USERNAME'@'localhost' IDENTIFIED BY 'PASSWORD';
)
Führen Sie einen Befehl wie den folgenden aus, um von allen Rechnern aus zuzugreifen. (Ersetzen USERNAME
y PASSWORD
durch Ihr Empfehlungsschreiben).
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Führen Sie einen Befehl wie den folgenden aus, um den Zugriff von einer bestimmten IP zu ermöglichen. (Ersetzen USERNAME
y PASSWORD
durch Ihr Empfehlungsschreiben).
mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Sie können 1.2.3.4 durch Ihre IP ersetzen. Sie können den obigen Befehl mehrmals ausführen, um den Zugriff von mehreren IPs aus zu gewähren.
Sie können auch eine separate USERNAME
& PASSWORD
für den Fernzugriff.
Sie können das Endergebnis überprüfen, indem Sie:
SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%";
Schließlich müssen Sie vielleicht auch laufen:
mysql> FLUSH PRIVILEGES;
Verbindung testen
Über Terminal/Befehlszeile:
mysql -h HOST -u USERNAME -pPASSWORD
Wenn Sie eine mysql-Shell erhalten, vergessen Sie nicht, show databases auszuführen, um zu prüfen, ob Sie die richtigen Berechtigungen für die entfernten Rechner haben.
Bonus-Tipp: Zugriff widerrufen
Wenn Sie einem Benutzer versehentlich Zugang gewähren, sollten Sie die Option zum Widerruf bereithalten.
Die folgenden Schritte widerrufen alle Optionen für USERNAME auf allen Rechnern:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%';
Following will revoke all options for USERNAME from particular IP:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4';
Its better to check information_schema.user_privileges table after running REVOKE command.
Wenn Sie nach der Ausführung des Befehls REVOKE die Berechtigung USAGE sehen, ist das in Ordnung. Es ist so gut wie gar kein Privileg. Ich bin nicht sicher, ob es widerrufen werden kann.