Der Fehler „Fehler beim Aufbau einer Da­ten­bank­ver­bin­dung“ tritt auf, wenn MySQL oder MariaDB die Ver­bin­dung zwischen der Anwendung und der Datenbank nicht her­stel­len kann. Meist liegt dies an falschen Zu­gangs­da­ten, einem ge­stopp­ten Da­ten­bank­ser­ver oder Problemen mit der Kon­fi­gu­ra­ti­on.

Was steckt hinter der Meldung “Fehler beim Aufbau einer Da­ten­bank­ver­bin­dung”?

Die Meldung „Fehler beim Aufbau einer Da­ten­bank­ver­bin­dung“ si­gna­li­siert, dass eine Anwendung wie zum Beispiel eine PHP-Website keine Ver­bin­dung zur MySQL- oder MariaDB-Datenbank her­stel­len konnte. Häufige Ursachen sind ungültige Zu­gangs­da­ten wie ein feh­ler­haf­ter Be­nut­zer­na­me oder ein feh­ler­haf­tes Passwort, ein nicht laufender Da­ten­bank­ser­ver oder feh­ler­haf­te Ser­ver­ein­stel­lun­gen. Auch Netz­werk­pro­ble­me, wie gesperrte Ports oder falsche Host-Angaben, können die Feh­ler­mel­dung auslösen. In Content-Ma­nage­ment-Systemen wie WordPress wird der Fehler direkt angezeigt, wenn die Datenbank nicht er­reich­bar ist. Meist blockiert er den Zugriff auf die gesamte Website, da Inhalte nicht geladen oder ge­spei­chert werden können.

Fehler beim Da­ten­bank­ver­bin­dungs­auf­bau in MySQL/MariaDB beheben - so geht’s

Wenn Sie sich nicht mit Ihrer Datenbank verbinden können, kann dies eine Reihe von Gründen haben. Prüfen Sie die nach­fol­gen­den Lösungen daher Schritt für Schritt, um her­aus­zu­fin­den, woran die Ver­bin­dung in Ihrem konkreten Fall scheitert.

Lösung 1: Stellen Sie sicher, dass MySQL/MariaDB läuft

Wenn MySQL oder MariaDB 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 aus­ge­führt haben. Wenn MySQL läuft, be­inhal­tet es auch den MySQL-Prozess.

Bild: MySQL-Prozess
An der Ausgabe erkennen Sie, ob MySQL/MariaDB läuft.

Wenn MySQL/MariaDB nicht läuft, sehen Sie nur Ihren grep-Befehl auf­ge­lis­tet.

Starten Sie MySQL/MariaDB mit den folgenden Befehlen:

# Ubuntu
systemctl start mysql
systemctl start mariadb
# CentOS
systemctl start mysqld
systemctl start mariadb

Achten Sie darauf, dass Sie den richtigen Be­nut­zer­na­men und das richtige Passwort verwenden. Beide In­for­ma­tio­nen werden bei der Er­stel­lung der MySQL-Datenbank fest­ge­legt. Außerdem müssen Sie den richtigen Hostnamen ein­stel­len.

Lösung 2: Über­prü­fen Sie die Da­ten­bank­ver­bin­dung

Sobald Sie wissen, dass MySQL/MariaDB läuft, ist der nächste Schritt, sich von der Be­fehls­zei­le aus mit dem Befehl zu verbinden:

mysql -u root -p

Sie sollten auf­ge­for­dert werden, das Passwort des Benutzers root ein­zu­ge­ben. Stan­dard­mä­ßig ist das Passwort für den Root-Zugang das gleiche wie das ur­sprüng­li­che Root-Passwort für Ihren Server.

Hinweis

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 ein­ge­ge­ben haben, sollten Sie sich im MySQL/MariaDB-Client befinden. Ein MySQL-Client sieht bei­spiels­wei­se so aus:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 9.4.0 Homebrew
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

Wenn Sie Probleme beim Aufbau einer MySQL-Ver­bin­dung mit einem anderen Be­nut­zer­na­men und Passwort haben, führen Sie diesen Test ein zweites Mal durch und ersetzen Sie root durch den anderen Be­nut­zer­na­men.

Lösung 3: Über­prü­fen Sie den MySQL/MariaDB-Be­nut­zer­na­men

Wenn Sie die falschen Zu­gangs­da­ten eingeben, erhalten Sie einen Fehler wie diesen:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Ver­ge­wis­sern Sie sich, dass sowohl der Be­nut­zer­na­me, den Sie in der Anfrage sehen, als auch das von Ihnen ein­ge­ge­be­ne Passwort korrekt ge­schrie­ben sind. Beachten Sie, dass der Be­nut­zer­na­me zwischen Groß- und Klein­schrei­bung un­ter­schei­det - Root ist nicht dasselbe wie root.

Es lohnt sich daher zu über­prü­fen, ob Sie die richtige Schreib­wei­se und Groß-/Klein­schrei­bung für den Be­nut­zer­na­men verwenden. Um alle MySQL/MariaDB-User auf­zu­lis­ten, melden Sie sich mit dem Befehl am Be­fehls­zei­len-Client als root an:

mysql -u root -p

Als nächstes listen Sie alle MySQL-User und ihre Hosts mit dem Befehl auf:

select host, user from mysql.user;

Dadurch wird Ihnen der Be­nut­zer­na­me genau so angezeigt, wie er erstellt wurde. Außerdem sehen Sie in der Spalte Host den Ort, von dem aus sich der User verbinden darf.

Lösung 4: Zu­rück­set­zen des MySQL/MariaDB-Kennworts des Benutzers

Hinweis

Ins­be­son­de­re beim Zu­rück­set­zen des Passworts des Root-Benutzers ist Vorsicht geboten. Passen Sie beim Ausführen der nach­fol­gen­den Tipps also besonders auf, um nicht aus Versehen ein falsches Passwort zu löschen.

Wenn auch die Schreib­wei­se des Be­nut­zer­na­mens nicht das Problem war, kann der Fehler auch an einem un­gül­ti­gen Passwort liegen. Um das MySQL/MariaDB-Passwort eines Benutzers zu­rück­zu­set­zen, melden Sie sich mit dem Befehl am Be­fehls­zei­len-Client als root an:

mysql -u root -p

Als nächstes setzen Sie das Passwort des ent­spre­chen­den Users mit dem Befehl zurück:

ALTER USER 'myuser'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;

Ersetzen Sie new_password durch das neue Passwort und myuser durch den Be­nut­zer­na­men.

Lösung 5: Stellen Sie sicher, dass der User die richtigen Be­rech­ti­gun­gen hat.

Wenn Sie sicher sind, dass Be­nut­zer­na­me und Passwort korrekt sind, kann das Problem darin bestehen, dass der User nicht über die richtigen Be­rech­ti­gun­gen (Grants) für diese Datenbank verfügt.

Um die Be­rech­ti­gun­gen (Grants) eines Users zu über­prü­fen, melden Sie sich mit dem Befehl am Be­fehls­zei­len-Client als root an:

mysql -u root -p

Als nächstes zeigen Sie die Be­rech­ti­gun­gen des Benutzers mit dem Befehl an:

SHOW GRANTS FOR 'myuser'@'localhost';

Ersetzen Sie myuser durch den Be­nut­zer­na­men. Ändern Sie ge­ge­be­nen­falls localhost in den Hostnamen.

Sie sollten eine Liste der Pri­vi­le­gi­en erhalten, die der User für die jeweilige Datenbank besitzt. Es sollte ungefähr so aussehen:

+-------------------------------------------------------------+
| Grants for myuser@localhost                                 |
+-------------------------------------------------------------+
| GRANT USAGE ON *.* TO `myuser`@`localhost`                  |
| GRANT ALL PRIVILEGES ON `reviews`.* TO `myuser`@`localhost` |
+-------------------------------------------------------------+
2 rows in set (0,004 sec)

Beachten Sie, dass dieser User alle Be­rech­ti­gun­gen für eine Datenbank namens reviews hat.

Wenn dem User keine Be­rech­ti­gun­gen für eine Datenbank zu­ge­wie­sen wurden, sehen Sie nur so etwas:

+--------------------------------------------+
| Grants for myuser@localhost                |
+--------------------------------------------+
| GRANT USAGE ON *.* TO `myuser`@`localhost` |
+--------------------------------------------+
1 row in set (0,001 sec)

Beachten Sie, dass dieser Benutzer nur die USAGE-Be­rech­ti­gun­gen auf “.” hat und keine Be­rech­ti­gun­gen für Da­ten­ban­ken. Dies kann den Zu­griffs­feh­ler ver­ur­sa­chen.

Lösung 6: Über­prü­fen der Da­ten­bank­ver­bin­dung aus dem Web heraus

Auch wenn MySQL oder MariaDB lokal laufen, kann es in der We­b­um­ge­bung trotzdem zu Problemen kommen. Ein einfacher Test aus dem Browser hilft dabei, genau diese Ver­bin­dung zu prüfen und mögliche Zu­griffs­pro­ble­me früh­zei­tig zu erkennen. Verwenden Sie ein einfaches Skript, um zu testen, ob Ihre Datenbank die Ver­bin­dung ak­zep­tiert. Erstellen Sie eine Datei namens database-connection-test.php mit folgendem Inhalt:

<?php
$test_connect = mysqli_connect('localhost', 'root', 'password');
if (!$test_connect) {
    die('Could not connect: ' . mysqli_connect_error());
}
echo 'Successful database connection.';
mysqli_close($test_connect);
?>

Ersetzen Sie das Wort password durch das Passwort von root.

Legen Sie diese Datei in Ihr Web­ver­zeich­nis und besuchen Sie sie dann in einem Browser. Wenn Sie in der Lage sind, sich mit dem Root-Be­nut­zer­na­men und Passwort zu verbinden, dann wissen Sie, dass Ihre Datenbank Ver­bin­dun­gen ak­zep­tiert.

Wenn Sie Probleme beim Aufbau einer MySQL/MariaDB-Ver­bin­dung mit einem anderen Be­nut­zer­na­men und Passwort haben, führen Sie diesen Test ein zweites Mal durch und ersetzen Sie root durch den anderen Be­nut­zer­na­men und das Passwort durch das ent­spre­chen­de Passwort.

Hinweis

Achten Sie darauf, diese Datei zu löschen, sobald Sie Ihre Tests ab­ge­schlos­sen haben.

Lösung 7: Prüfen der Firewall und Ports

Selbst wenn MySQL oder MariaDB korrekt laufen und die Zu­gangs­da­ten stimmen, kann eine Firewall die Ver­bin­dung blo­ckie­ren. Stan­dard­mä­ßig nutzt MySQL den Port 3306 für ein­ge­hen­de Ver­bin­dun­gen. Prüfen Sie zunächst, ob der Port offen ist. Auf einem Linux-System können Sie dazu folgende Befehle verwenden:

sudo netstat -tulnp | grep 3306
# Auf Systemen mit ufw (Ubuntu)
sudo ufw status

Wenn die Firewall den Port blockiert, können Sie ihn gezielt freigeben:

# Ubuntu mit ufw
sudo ufw allow 3306/tcp
sudo ufw reload
# CentOS oder RHEL mit firewalld
sudo firewall-cmd --permanent --add-port=3306/tcp
sudo firewall-cmd --reload

Achten Sie darauf, dass Sie den Port nur für die IP-Adressen freigeben, die tat­säch­lich Zugriff benötigen. Eine Öffnung für alle kann ein Si­cher­heits­ri­si­ko dar­stel­len. Nachdem die Firewall ent­spre­chend angepasst wurde, sollte Ihre Anwendung wieder in der Lage sein, eine Ver­bin­dung zur MySQL-/MariaDB-Datenbank her­zu­stel­len. Prüfen Sie dies erneut mit dem PHP-Test­skript oder direkt über die Konsole.

Zum Hauptmenü