"Fehler beim Aufbau einer Datenbankverbindung" MySQL/MariaDB-Fehler beheben
Erfahren Sie mehr über den MySQL/MariaDB-Fehler "Fehler beim Herstellen einer Datenbankverbindung" oder "Verbindung zum Datenbankserver nicht möglich" und wie Sie diesen Fehler beheben können.
Stellen Sie sicher, dass MySQL läuft
Wenn MySQL nicht mehr läuft, können sich Skripte und Websites nicht mehr verbinden. Auf einem Linux-Server können Sie mit dem Befehl sehen, ob MySQL läuft:
ps -aux | grep mysql
Dies gibt eine Liste der laufenden Prozesse zurück, die "mysql" im Namen haben. Die Liste enthält den Befehl, den Sie gerade ausgeführt haben. Wenn MySQL läuft, beinhaltet es auch den MySQL-Prozess.
Wenn MySQL/MariaDB nicht läuft, sehen Sie nur Ihren grep-Befehl aufgelistet.
Starten Sie MySQL/MariaDB mit dem Befehl:
Sie müssen auch den richtigen Hostnamen einstellen.
Starten Sie MySQL/MariaDB mit dem Befehl:
- CentOS 7 (MariaDB): systemctl start mariadb
- Ubuntu und Debian (MySQL): Dienst mysql start oder /etc/init.d/mysqld start
Sie müssen auch den richtigen Hostnamen einstellen.
Überprüfen der Datenbankverbindung über die Befehlszeile
Sobald Sie wissen, dass MySQL/MariaDB läuft, ist der nächste Schritt, sich von der Befehlszeile aus mit dem Befehl zu verbinden:
mysql -u root -p
Sie sollten aufgefordert werden, das Passwort des MySQL-Benutzers root einzugeben. Standardmäßig ist das Passwort für den MySQL-Root-Benutzer das gleiche wie das ursprüngliche Root-Passwort für Ihren Server.
Wenn Sie das Passwort für den Root-Server-Benutzer ändern, wird das Passwort für den MySQL-Root-Benutzer nicht geändert.
Nachdem Sie das Passwort eingegeben haben, sollten Sie sich im MySQL/MariaDB-Client befinden, der in etwa so aussehen sollte:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 4172
Server version: 5.5.44-MariaDB MariaDB Server
Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]
Wenn Sie Probleme beim Aufbau einer MySQL-Verbindung mit einem anderen Benutzernamen und Passwort haben, führen Sie diesen Test ein zweites Mal durch und ersetzen Sie root durch den anderen Benutzernamen.
Wenn Sie sich nicht am Client anmelden, erhalten Sie einen Fehler wie diesen:
Wenn Sie sich nicht am Client anmelden, erhalten Sie einen Fehler wie diesen:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Du gibst nicht das richtige Passwort für den Benutzernamen ein. Vergewissern Sie sich, dass sowohl der Benutzername als auch das Passwort korrekt geschrieben sind. Beachten Sie, dass der Benutzername zwischen Groß- und Kleinschreibung unterscheidet - Root ist nicht dasselbe wie root.
Social Buy Button
Machen Sie Follower zu Ihren Kunden - Einfach: In wenigen Schritten über Social Media verkaufen
- Intuitiv: Eine Plattform für sämtliche Kanäle inkl. Synchronisation
- Flexibel: Jederzeit an Ihre Bedürfnisse anpassbar
Überprüfen Sie den MySQL-Benutzernamen
Es lohnt sich zu überprüfen, ob Sie die richtige Schreibweise und Groß-/Kleinschreibung für den Benutzernamen verwenden. Um alle MySQL/MariaDB-Benutzer aufzulisten, melden Sie sich mit dem Befehl am Befehlszeilen-Client als root an:
mysql -u root -p
Als nächstes listen Sie alle MySQL-Benutzer und ihre Hosts mit dem Befehl auf:
select host, user from mysql.user;
Dadurch wird Ihnen der Benutzername genau so angezeigt, wie er erstellt wurde, sowie der Standort (Host), von dem aus er sich verbinden darf.
Zurücksetzen des MySQL-Kennworts des Benutzers
Achten Sie bei der Verwendung dieses Befehls auf Vorsicht, insbesondere beim Zurücksetzen des Passworts des MySQL-Root-Benutzers.
Um das MySQL/MariaDB-Passwort eines Benutzers zurückzusetzen, melden Sie sich mit dem Befehl am Befehlszeilen-Client als root an:
mysql -u root -p
Als nächstes setzen Sie das Passwort des Benutzers mit dem Befehl zurück:
update mysql.user set password = MD5('(new_password)') where user = "jdoe";
Ersetzen Sie new_password durch das neue Passwort und jdoe durch den Benutzernamen.
Stellen Sie sicher, dass der Benutzer die richtigen Berechtigungen hat.
Wenn Sie sicher sind, dass Benutzername und Passwort korrekt sind, kann das Problem darin bestehen, dass der Benutzer nicht über die richtigen Berechtigungen (Grants) für diese Datenbank verfügt.
Um die Berechtigungen (Grants) eines Benutzers zu überprüfen, melden Sie sich mit dem Befehl am Befehlszeilen-Client als root an:
Um die Berechtigungen (Grants) eines Benutzers zu überprüfen, melden Sie sich mit dem Befehl am Befehlszeilen-Client als root an:
mysql -u root -p
Als nächstes zeigen Sie die Berechtigungen des Benutzers mit dem Befehl an:
show grants for 'jdoe'@'localhost';
Ersetzen Sie jdoe durch den Benutzernamen. Ändern Sie gegebenenfalls localhost in den Hostnamen.
Sie sollten eine Liste der Privilegien erhalten, die der Benutzer für die jeweilige Datenbank besitzt. Es sollte ungefähr so aussehen:
Sie sollten eine Liste der Privilegien erhalten, die der Benutzer für die jeweilige Datenbank besitzt. Es sollte ungefähr so aussehen:
+-----------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'jdoe'@'localhost' IDENTIFIED BY PASSWORD '*CD2BAEA88178935C438649F12126752DB1B24D7B' |
| GRANT ALL PRIVILEGES ON `example_database`.* TO 'jdoe'@'localhost' |
+-----------------------------------------------------------------------------------------------------------------------+
Beachten Sie, dass dieser Benutzer alle Berechtigungen für eine Datenbank namens example_database hat.
Wenn dem Benutzer keine Berechtigungen für eine Datenbank zugewiesen wurden, sehen Sie nur so etwas:
Wenn dem Benutzer keine Berechtigungen für eine Datenbank zugewiesen wurden, sehen Sie nur so etwas:
+-------------------------------------------------------------------------------------------------------------+
| Grants for jdoe@localhost |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'jdoe'@'localhost' IDENTIFIED BY PASSWORD '*00E247AC5F9AF26AE0194B41E1E769DEE1429A29' |
+-------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Beachten Sie, dass dieser Benutzer nur die USAGE-Berechtigungen auf "." hat und keine Berechtigungen für Datenbanken.
Überprüfen der Datenbankverbindung aus dem Web heraus
Verwenden Sie ein einfaches Skript, um zu testen, ob Ihre Datenbank die Verbindung akzeptiert. Erstellen Sie eine Datei namens database-connection-test.php mit folgendem Inhalt:
<?php
$test_connect = mysql_connect('localhost', 'root', 'password');
if (!$test_connect) {
die('Could not connect: ' . mysql_error());
}
echo 'Successful database connection.';
mysql_close($test_connect);
?>
Ersetzen Sie das Wort password durch das Passwort Ihres MySQL-Benutzers root.
Legen Sie diese Datei in Ihr Webverzeichnis und besuchen Sie sie dann in einem Browser. Wenn Sie in der Lage sind, sich mit dem MySQL-Root-Benutzernamen und Passwort zu verbinden, dann wissen Sie, dass Ihre Datenbank Verbindungen akzeptiert.
Wenn Sie Probleme beim Aufbau einer MySQL-Verbindung mit einem anderen Benutzernamen und Passwort haben, führen Sie diesen Test ein zweites Mal durch und ersetzen Sie root durch den anderen Benutzernamen und das Passwort durch das Passwort.
Legen Sie diese Datei in Ihr Webverzeichnis und besuchen Sie sie dann in einem Browser. Wenn Sie in der Lage sind, sich mit dem MySQL-Root-Benutzernamen und Passwort zu verbinden, dann wissen Sie, dass Ihre Datenbank Verbindungen akzeptiert.
Wenn Sie Probleme beim Aufbau einer MySQL-Verbindung mit einem anderen Benutzernamen und Passwort haben, führen Sie diesen Test ein zweites Mal durch und ersetzen Sie root durch den anderen Benutzernamen und das Passwort durch das Passwort.
Achten Sie darauf, diese Datei zu löschen, sobald Sie Ihre Tests abgeschlossen haben.
Überprüfen Sie den MySQL-Hostnamen
Wenn das Skript auf dem gleichen Server wie die MySQL-Datenbank gehostet wird (z.B. Ihr Linux Cloud Server, ist der Hostname standardmäßig localhost.
Um den MySQL-Hostnamen noch einmal zu überprüfen, melden Sie sich mit dem Befehl am Befehlszeilen-Client als root an:
Um den MySQL-Hostnamen noch einmal zu überprüfen, melden Sie sich mit dem Befehl am Befehlszeilen-Client als root an:
mysql -u root -p
Als nächstes zeigen Sie den Hostnamen mit dem Befehl an:
SHOW VARIABLES WHERE Variable_name = 'hostname';
Wenn Ihr Skript auf eine entfernte Datenbank zugreift, ist der Hostname die URL dieser Datenbank.