Hier ist eine schnelle Checkliste zum Aktivieren von Remote-Verbindungen für MySQL, aber lesen Sie zuerst (6). Wenn ich etwas übersehen habe, können Sie es gerne bearbeiten.
1) Ihr entfernter Benutzer stellt eine Verbindung über ein Konto her, das mit dem entsprechenden user,host
erstellt wurde Einträge (siehe Ausgabe von select user,host from mysql.user order by 1,2
). Wenn nicht, schauen Sie in den CREATE USER
und/oder GRANT
Befehle. Untersuchen Sie die Ausgabe von SHOW GRANTS
für den Benutzer.
2) Sie haben flush privileges;
ausgeführt
(Einige sagen, es ist unnötig, andere sagen, es ist).
3a) Suchen Sie Ihre MySQL-Konfigurationsdatei, auf die in 3b) unten verwiesen wird, indem Sie die Informationen in Dieses Dokument
(oder für Windows wahrscheinlich C:\ProgramData\MySQL\MySQL Server 5.NNN
Weg). Es variiert je nach Distribution für Linux.
3b) Sie haben my.ini
geändert und gespeichert (Windows) oder my.cnf
(Linux) und geänderte bind-address
weg von 127.0.0.1
oder localhost
, zugunsten von 0.0.0.0
. Und Sie haben und erstellt rem'd die folgende Zeile aus:#skip-networking
. Es sieht ungefähr so aus:
[mysqld]
bind-address=0.0.0.0
#skip-networking
4) Starten Sie den MySQL-Daemon neu. Wie man das macht, ist je nach Distribution unterschiedlich.
5) Firewall-Probleme. Stellen Sie sicher, dass der Port standardmäßig 3306
ist , ist offen für die Außenwelt (die tatsächlich nur Ihr Intranet sein kann). Dies schließt alle anderen Schichten von Firewalls ein, wie z. B. AWS EC2-Sicherheitsgruppen oder ähnliches, falls vorhanden.
6) Verstehen Sie, dass damit ein Sicherheitsrisiko verbunden ist. Führen Sie dies nicht aus, es sei denn, Sie wissen, wie Sie Ihren MySQL-Server Remote-Verbindungen aussetzen.
7) Bitte führen Sie regelmäßig Sicherheitsbewertungen mit select
durch Erklärung, die oben unter 1. aufgeführt ist, einschließlich der Überprüfung der SHOW GRANTS
für diese Benutzer. Gewähren Sie Benutzern nicht unnötig Platzhalter. Geben Sie Benutzern stattdessen die minimalen Privilegien, damit sie ihre Arbeit erledigen können.
8) Untersuchen Sie häufig fehlgeschlagene Verbindungsversuche über das allgemeine Protokoll und das Fehlerprotokoll, wie unten kurz vorgestellt.
Bei eingehenden Anfragen können Sie sich das allgemeine Abfrageprotokoll ansehen.
select @@general_log; -- a 1 indicates it is turned on for capture
select @@general_log_file; -- the file that it logs to
Alle Abfragen können also sein im Allgemeines Abfrageprotokoll
protokolliert wenn die Einstellung eingeschaltet ist. Untersuchen Sie das Protokoll auf „connect“, aber insbesondere auf Access denied for user
Fehlversuche zu sehen. Tun Sie dies regelmäßig (nicht alle paar Jahre). Ich mache es mindestens zweimal am Tag. Beachten Sie, dass Sie die Berichterstellung natürlich über ein externes Programm automatisieren können. Die Außenwelt wird hämmern Ihren Server, um wie im Bild unten einzusteigen. Es ist eine Realität; machen Sie sich darauf gefasst.
Sehen Sie sich die Handbuchseite für Das Fehlerprotokoll an Beachten Sie auch Warnstufen und Ausführlichkeitseinstellungen basierend auf Ihrer Version.
Ich würde empfehlen, eine Sicherungskopie nach Datum (so benannt) zu erstellen und die Protokolldateien nach der Sicherung zu löschen, um nach der Sicherung neu zu beginnen. Die Protokolldateien können schnell sehr groß werden, insbesondere das allgemeine Protokoll. Vergessen Sie nicht, ob Sie die Einstellung für die Protokollierung aktiviert oder deaktiviert haben.
Sie können die beiden Protokolle verwenden, um festzustellen, ob Ihr Verbindungsversuch während der hier beschriebenen Schritte die Firewall passiert hat.