Hier sind einige Gründe für das Auftreten des Can't connect to local MySQL server-Fehlers:
*
mysqld läuft nicht.
*
Sie fahren auf einem System, das MIT-pThread verwendet. Wenn Sie auf einem System fahren, das keine nativen Threads hat, benutzt mysqld das MIT-pThread-Paket. See Abschnitt 3.2.2, „Betriebssysteme, die von MySQL unterstützt werden“. Nicht alle MIT-pThread-Versionen unterstützen jedoch Unix-Sockets. Auf einem System ohne Socket-Unterstützung müssen Sie den Hostnamen immer explizit angeben, wenn Sie sich mit dem Server verbinden. Benutzen Sie diesen Befehl, um die Verbindung zum Server zu überprüfen:
shell> mysqladmin -h `hostname` version
*
Jemand hat den Unix-Socket entfernt, den mysqld benutzt (Vorgabe /tmp/mysqld.sock). Vielleicht gibt es einen cron-Job, der den MySQL-Socket entfernt (beispielsweise ein Job, der alte Dateien aus dem /tmp-Verzeichnis entfernt). Sie können mysqladmin version laufen lassen und überprüfen, dass der Socket, den mysqladmin versucht zu benutzen, tatsächlich existiert. Die Problemlösung besteht in diesem Fall darin, den cron-Job so zu ändern, dass er nicht mysqld.sock entfernt oder den Socket an andere Stelle zu platzieren. See Abschnitt A.4.5, „Wie Sie die MySQL-Socket-Datei /tmp/mysql.sock schützen oder ändern“.
*
Sie haben den mysqld-Server mit der --socket=/pfad/zu/socket-Option gestartet. Wenn Sie den Socket-Pfadnamen zum Server ändern, müssen Sie auch die MySQL-Clients darüber unterrichten. Das können Sie tun, indem Sie den Socket-Pfad als Argument an den Client übergeben. See Abschnitt A.4.5, „Wie Sie die MySQL-Socket-Datei /tmp/mysql.sock schützen oder ändern“.
*
Sie benutzen Linux und ein Thread ist gestorben (Core Dump). In diesem Fall müssen Sie den anderen mysqld-Thread killen (beispielsweise mit dem mysql_zap-Skript), bevor Sie einen neuen MySQL-Server starten können. See Abschnitt A.4.1, „Was zu tun ist, wenn MySQL andauernd abstürzt“.
*
Eventuell haben Sie keine Lese- und Schreibberechtigungen entweder für das Verzeichnis, in dem die Socket-Datei liegt, oder keine Berechtigung für die Socket-Datei selbst. In diesem Fall können Sie entweder die Berechtigung für die Datei und / oder das Verzeichnis ändern oder mysqld neu starten, so dass er ein Verzeichnis benutzt, auf das Sie Zugriff haben.
Wenn Sie die Fehlermeldung Can't connect to MySQL server on ein_hostname erhalten, können Sie folgendes probieren, um den Grund des Problems herauszufinden:
*
Überprüfen Sie, ob der Server hochgefahren ist, indem Sie telnet ihr_hostname tcp-ip-port-nummer ausführen und einige Male die Eingabetaste (RETURN) drücken. Wenn es auf diesem Port einen laufenden MySQL-Server gibt, sollten Sie eine Antwort erhalten, die die Versionsnummer des Server enthält. Wenn Sie einen Fehler wie telnet: Unable to connect to remote host: Connection refused erhalten, gibt es auf diesem Port keinen laufenden Server.
*
Versuchen Sie, sich mit dem mysqld-Daemon auf der lokalen Maschine zu verbinden und prüfen Sie den TCP/IP-Port, den mysqld laut Konfiguration benutzen soll (Variable port), mit mysqladmin variables.
*
Prüfen Sie, ob Ihr mysqld-Server nicht gestartet wurde, indem Sie die --skip-networking-Option verwenden.