Nützliche Tipps zur Fehlerbehebung bei MySQL -Fehlern in MySQL

Nützliche Tipps zur Fehlerbehebung bei MySQL -Fehlern in MySQL

Mysql ist ein weit verbreitetes Open Source Relational Database Management System (RDMS) gehört Orakel. Es war im Laufe der Jahre die Standardauswahl für webbasierte Anwendungen und bleibt im Vergleich zu anderen Datenbankmotoren weiterhin beliebt.

Lesen Sie auch: So installieren Sie die neueste MySQL auf Rhel/Centos und Fedora

Mysql wurde für Webanwendungen entwickelt und optimiert - es ist ein wesentlicher Bestandteil der wichtigsten webbasierten Anwendungen wie z. B Facebook, Twitter, Wikipedia, Youtube, und viele andere.

Wird Ihre Website oder Webanwendung von Strom versorgt von Mysql? In diesem detaillierten Artikel werden wir erläutern Mysql Datenbankserver. Wir werden beschreiben, wie die Ursachen der Probleme und was zu tun ist, um sie zu lösen.

1. Ich kann keine Verbindung zum lokalen MySQL -Server herstellen

Einer der gängigen Client -to -Server -Verbindungsfehler in MySQL lautet “Fehler 2002 (HY000): Über Socket '/var/run/mysqld/mysqld kann nicht mit einem lokalen MySQL -Server hergestellt werden.Socke '(2)”.

Ich kann keine Verbindung zum lokalen MySQL -Server herstellen

Dieser Fehler zeigt an, dass es keine gibt Mysql Server (Mysqld) Ausführen auf dem Hostsystem oder dass Sie einen falschen Unix -Socket -Dateinamen angegeben haben oder TCP/IP Port beim Versuch, eine Verbindung zum Server herzustellen.

Stellen Sie sicher, dass der Server ausgeführt wird, indem Sie einen genannten Prozess überprüfen Mysqld Auf Ihrem Datenbankserver -Host verwenden Sie den Befehl ps und grep wie gezeigt gemeinsam.

$ ps xa | grep mysqld | grep -v mysqld 

Wenn die obigen Befehle keine Ausgabe anzeigen, wird der Datenbankserver nicht ausgeführt. Daher kann der Client keine Verbindung dazu herstellen. Führen Sie den folgenden SystemCTL -Befehl aus, um den Server zu starten.

$ sudo systemctl starten mysql #debian/ubuntu $ sudo systemctl starten mysqld #rhel/centos/fedora 

Um die zu überprüfen Mysql Dienststatus verwenden Sie den folgenden Befehl.

$ sudo systemctl Status MySQL #Debian/Ubuntu $ sudo systemCTL Status MySQLD #Rhel/Centos/Fedora 
Überprüfen Sie den MySQL -Status

Aus der Ausgabe des obigen Befehls die Mysql Der Service ist gescheitert. In einem solchen Fall können Sie versuchen, es neu zu starten und seinen Status noch einmal zu überprüfen.

$ sudo systemctl starten Sie MySQL $ sudo systemctl Status MySQL neu 
Starten Sie MySQL neu und überprüfen Sie den Status

Wenn der Server ausgeführt wird, wie im folgenden Befehl gezeigt, sehen Sie außerdem auch den oben genannten Fehler fest, dass die TCP/IP Port wird durch eine Firewall oder einen Anschlussblockierungsdienst blockiert.

$ ps xa | grep mysqld | grep -v mysqld 

Verwenden Sie den Befehl netstat wie gezeigt, um den Port zu finden, den der Server hört.

$ sudo netstat -tlpn | Grep "Mysql" 

2. Ich kann keine Verbindung zum MySQL -Server herstellen

Ein weiterer häufig auftretender Verbindungsfehler ist “(2003) können keine Verbindung zu MySQL Server auf 'Server' herstellen (10061)”, Was bedeutet, dass die Netzwerkverbindung abgelehnt wurde.

Beginnen Sie hier, um zu überprüfen, ob es eine gibt Mysql Server, der auf dem System ausgeführt wird, wie oben gezeigt. Stellen Sie außerdem sicher, dass der Server über Netzwerkverbindungen aktiviert ist und dass der Netzwerkport, den Sie zur Verbindung verwenden, die auf dem Server konfiguriert ist.

Andere häufige Fehler, auf die Sie wahrscheinlich begegnen, wenn Sie versuchen, eine Verbindung zum MySQL -Server herzustellen, sind:

Fehler 2003: Eine Verbindung zum MySQL -Server auf 'Host_name' (111) Fehler 2002: Über Socket '/TMP/MySQL kann keine Verbindung zum lokalen MySQL -Server hergestellt werden.Socke '(111) 

Diese Fehler zeigen, dass der Server möglicherweise ausgeführt wird. Sie versuchen jedoch, eine Verbindung mit a zu verbinden TCP/IP Port, benannte Pipe oder UNIX -Socket -Datei unterscheidet sich von der, auf die der Server zuhört.

3. Zugriff verweigerte Fehler in MySQL

In Mysql, Ein Benutzerkonto ist in Bezug auf a definiert Nutzername und den Client -Host oder Hosts, aus dem der Benutzer eine Verbindung zum Server herstellen kann. Darüber hinaus kann ein Konto auch Authentifizierungsanmeldeinformationen wie ein Passwort haben.

Obwohl es viele verschiedene Ursachen von “gibt“Zugriff abgelehntFehler, eine der üblichen Ursachen ist die Bezogen auf die MySQL -Konten, die der Server beim Verbinden Client -Programme verwendet. Es zeigt das an Nutzername Die in der Verbindung angegeben.

MySQL ermöglicht die Erstellung von Konten, mit denen Client -Benutzer eine Verbindung zum Server herstellen und vom Server verwaltete Daten zugreifen können. In dieser Hinsicht begegnen Sie, wenn Sie auf einen begegnen Zugriff verweigerte Fehler, Überprüfen Sie, ob das Benutzerkonto über das von Ihnen verwendete Clientprogramm eine Verbindung zum Server herstellen darf, und möglicherweise den Host, aus dem die Verbindung stammt.

Sie können sehen, welche Privilegien ein bestimmtes Konto haben, indem Sie das ausführen Zeigenzuschüsse Befehl wie gezeigt.

> Zeigen Sie Zuschüsse für 'tecmint'@'localhost'; 

Sie können einem bestimmten Benutzer in der Remote -IP -Adresse einen bestimmten Benutzer in einer bestimmten Datenbank über die folgenden Befehle in der MySQL -Shell erhalten.

> Gewähren Sie alle Privilegien auf *.test_db zu 'tecmint'@'192.168.0.100'; > Spush -Privilegien; 

Außerdem, Zugang verweigerte Fehler Kann auch durch Probleme mit der Verbindung mit MySQL resultieren, siehe zuvor erklärte Fehler.

4. Verlorene Verbindung zum MySQL -Server

Sie können diesen Fehler aufgrund eines der folgenden Gründe begegnen: schlechte Netzwerkkonnektivität, Verbindungszeitüberschreitung oder Ein Problem mit Blob Werte, die größer sind als max_alowed_packet. Stellen Sie im Falle eines Netzwerkverbindungsproblems sicher, dass Sie eine gute Netzwerkverbindung haben, insbesondere wenn Sie auf einen Remote -Datenbankserver zugreifen.

Wenn es a ist Verbindungszeitüberschreitung Problem, besonders wenn Mysql Versucht, eine anfängliche Verbindung zum Server zu verwenden, erhöhen Sie den Wert des Verbindungs ​​Timeout Parameter. Aber im Fall von Blobwerte das sind größer als max_alowed_packet, Sie müssen einen höheren Wert für die festlegen max_alowed_packet in deinem /etc/mein.CNF Konfigurationsdatei unter [Mysqld] oder [Klient] Abschnitt wie gezeigt.

[Mysqld] Connect_timeout = 100 max_allowed_packet = 500m 

Wenn der Mysql Die Konfigurationsdatei ist für Sie nicht zugegriffen. Dann können Sie diesen Wert mit dem folgenden Befehl in der MySQL -Shell festlegen.

> Setzen Sie Global Connect_timeout = 100; > Setzen Sie Global max_alowed_packet = 524288000; 

5. Zu viele MySQL -Verbindungen

Falls a Mysql Der Klient trifft auf “zu viele VerbindungenFehler, dies bedeutet, dass alle verfügbaren Verbindungen von anderen Clients verwendet werden. Die Anzahl der Verbindungen (Standard ist 151) wird von der gesteuert max_connections Systemvariable; Sie können das Problem beheben, indem Sie seinen Wert erhöhen, um mehr Verbindungen in Ihrem zu ermöglichen /etc/mein.CNF Konfigurationsdatei.

[Mysqld] max_connections = 1000 

6. Aus der Erinnerung Mysql

Falls Sie eine Abfrage mit dem ausführen Mysql Client -Programm und begegnen auf den fraglichen Fehler. Dies bedeutet, dass MySQL nicht über genügend Speicher verfügt, um das gesamte Abfrageergebnis zu speichern.

Der erste Schritt besteht darin, sicherzustellen, dass die Abfrage korrekt ist

  • Wenn Sie den MySQL -Client direkt verwenden, starten Sie ihn mit --schnell umschalten, Gespeicherte Ergebnisse deaktivieren oder
  • Wenn Sie die verwenden Myodbc Der Treiber, die Konfiguration User Interface (UI) hat eine erweiterte Registerkarte für Flags. Überprüfen "Nicht vorhanden“.

Ein weiteres großartiges Werkzeug ist, Mysql Tuner - Ein nützliches Skript, das eine Verbindung zu einem laufenden MySQL -Server herstellt und Vorschläge dafür enthält, wie es für eine höhere Leistung konfiguriert werden kann.

$ sudo apt-get install mySqltuner #debian/ubuntu $ sudo yum install mysqltuner #rhel/centos/fedora $ mysqltuner 

Lesen Sie unseren Artikel für MySQL -Optimierungs- und Leistungsstimmtipps: 15 Nützliche Tipps zur Leistung und Optimierung von MySQL/Mariadb Performance und Optimierung.

7. MySQL stürzt immer wieder ab

Wenn Sie auf dieses Problem stoßen, sollten Sie versuchen, herauszufinden, ob das Problem ist, dass die Mysql Server stirbt oder ob es der Client mit einem Problem ist. Beachten Sie, dass viele Serverabstürze durch beschädigte Datendateien oder Indexdateien verursacht werden.

Sie können den Serverstatus überprüfen, um festzustellen, wie lange er in Betrieb war.

$ sudo systemctl Status MySQL #Debian/Ubuntu $ sudo systemCTL Status MySQLD #Rhel/Centos/Fedora 

Alternativ führen Sie den folgenden Befehl mySqladmin aus, um Uptime of MySQL Server zu finden.

$ sudo mysqladmin Version -p 
Finden Sie MySQL Server -Betriebszeit

Andere Lösungen sind, aber nicht beschränkt darauf, die zu stoppen Mysql Server und Aktivieren des Debuggens und dann den Dienst erneut starten. Sie können versuchen, einen Testfall zu erstellen, mit dem das Problem wiederholt werden kann. Öffnen Sie außerdem ein zusätzliches Terminalfenster und führen Sie den folgenden Befehl aus, um MySQL -Prozessstatistiken anzuzeigen, während Sie Ihre anderen Abfragen ausführen:

$ sudo mysqladmin -i 5 Status oder $ sudo mysqladmin -i 5 -r Status 

Fazit: Bestimmen, was ein Problem oder einen Fehler verursacht

Obwohl wir uns einige gemeinsam angesehen haben Mysql Probleme und Fehler und auch Möglichkeiten zur Fehlerbehebung und Lösung.

Wie können Sie das bestimmen?? Die folgenden Punkte führen Sie dazu, wie Sie feststellen können, was genau ein Problem verursacht:

  1. Der erste und wichtigste Schritt besteht darin, in die MySQL -Protokolle zu untersuchen, die im Verzeichnis gespeichert sind /var/log/mysql/. Sie können Befehlszeilen -Dienstprogramme wie Tail verwenden, um die Protokolldateien durchzulesen.
  2. Wenn MySQL -Dienst nicht startet, überprüfen Sie seinen Status mithilfe von SystemCTL oder verwenden Sie die Journetctl (mit dem -xe Flag) Befehl unter systemd, um das Problem zu untersuchen.
  3. Sie können auch Systemprotokolldatei wie z /var/log/messages oder ähnlich aus Gründen für Ihr Problem.
  4. Versuchen Sie, Tools wie MyTOP, Blicken, Top, PS oder HTOP zu verwenden, um zu überprüfen, welches Programm alle CPU einnimmt oder den Computer sperrt, oder um zu überprüfen.
  5. Unter der Annahme, dass dieses Problem ein außer Kontrolle geratener Prozess ist, können Sie immer versuchen, es zu töten (mit dem Dienstprogramm PKill oder Kill), damit MySQL normal funktioniert.
  6. Angenommen, das Mysqld Der Server verursacht Probleme, Sie können den Befehl ausführen: Mysqladmin -u Wurzelping oder Mysqladmin -u Root Processlist Um eine Antwort daraus zu erhalten.
  7. Wenn das Problem bei Ihrem Client -Programm liegt, während Sie versuchen, eine Verbindung zum MySQL -Server herzustellen, überprüfen Sie, warum es nicht gut funktioniert.

Möglicherweise lesen Sie auch die folgenden Artikel mit MySQL -bezogenen Artikeln:

  1. Lernen Sie MySQL / Mariadb für Anfänger - Teil 1
  2. So überwachen Sie MySQL/Mariadb -Datenbanken mit NetData auf CentOS 7
  3. So übertragen Sie alle MySQL -Datenbanken vom alten auf einen neuen Server
  4. MyTop - Ein nützliches Instrument zur Überwachung von MySQL/MariadB -Leistung unter Linux
  5. 12 MySQL/Mariadb Security Best Practices für Linux

Weitere Informationen erhalten Sie im MySQL Referenzhandbuch zu Problemen und allgemeinen Fehlern. Es listet umfassend gemeinsame Probleme und Fehlermeldungen auf.