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

MySQL-Verbindung funktioniert nicht

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.