1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Error establishing a database connection

Dieses Thema im Forum "Installation" wurde erstellt von karx11erx, 19. April 2021.

Schlagworte:
  1. karx11erx

    karx11erx Member

    Registriert seit:
    19. April 2021
    Beiträge:
    12
    Zustimmungen:
    0
    Ich habe php, mysql und wordpress manuell (putty/ssh) auf meinem (brandneuen) Ubuntu 20.04 Server mit Apache2 installiert.

    php Version: 7.4.3
    WordPress Version: 5.7.1

    Ich kann mich mit dem wordpress User in mein mysql einloggen. Die Datenbank für WordPress ist vorhanden. Alle erforderlichen Werte (DB_NAME, DB_USER, DB_PASSWORD) sind korrekt in wp-config.php eingetragen. DB_HOST ist 'localhost'.

    Das Installationsverzeichnis von WordPress ist /var/www/wordpress. Die Subdomain wordpress.descent2.de ist mittels einer VirtualHost-Konfiguration darauf gemappt. WordPress lässt sich über die Subdomain aufrufen.

    Trotzdem kann WordPress keine Verbindung zu seiner Datenbank auf meinem Server aufbauen. wp-admin zeigt denselben Fehler.

    Woran könnte das noch liegen?
     
  2. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    7.345
    Zustimmungen:
    587
    und nach welcher Anleitung hast du installiert?

    Evtl. fehlt ja

    sudo apt install php-mysql

    kann auch ein rechte Problem von MySQL sein. Evtl. hat der mySQL Benutzer keine Rechte für die Tabelle? Mit welchem Befehl hast den Benutzer angelegt?
     
    karx11erx gefällt das.
  3. karx11erx

    karx11erx Member

    Registriert seit:
    19. April 2021
    Beiträge:
    12
    Zustimmungen:
    0
    php-mysql hat tatsächlich gefehlt. Danke für den Hinweis. Habe es installiert und den apache2 neu gestartet, Problem ist aber leider immer noch da.

    CREATE USER 'wordpress'@'%' IDENTIFIED WITH mysql_native_password BY '...';
    GRANT ALL ON wordpress.* TO 'wordpress'@'%';
    FLUSH PRIVILEGES;

    Grants for wordpress@%

    GRANT USAGE ON *.* TO `wordpress`@`%`
    GRANT ALL PRIVILEGES ON `wordpress`.* TO `wordpress`@`%`

    aus wp-config.php

    define( 'DB_NAME', 'wordpress' );
    define( 'DB_USER', 'wordpress' );

    DB und user heißen beide "wordpress".
     
  4. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Ist der MySQL Server auf der Konsole über localhost erreichbar? Oder über 127.0.0.1?
     
    karx11erx gefällt das.
  5. karx11erx

    karx11erx Member

    Registriert seit:
    19. April 2021
    Beiträge:
    12
    Zustimmungen:
    0
    Wie teste ich das? Bin da kompletter Neuling. Hatte es schon gegoogelt, aber nichts gefunden.

    mysql an sich kann ich in putty (ssh) Konsole aufrufen.

    Es liegt jedenfalls alles auf demselben Server.

    In der mysqld.cnf steht nicht viel drin:

    bind-address = 127.0.0.1
    mysqlx-bind-address = 127.0.0.1

    Ich habe auch Port 3306 (TCP) aufgemacht.

    Meine Anleitung für manuelle WordPress-Installation war übrigens diese hier: https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-on-ubuntu-20-04-with-a-lamp-stack-de
     
    #5 karx11erx, 19. April 2021
    Zuletzt bearbeitet: 19. April 2021
  6. karx11erx

    karx11erx Member

    Registriert seit:
    19. April 2021
    Beiträge:
    12
    Zustimmungen:
    0
     
  7. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    7.345
    Zustimmungen:
    587

    Grusel - DAS MACHT MAN NICHT!

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    fehlt mir oder habe ich überlesen

    Man erstellt die Datenbanktabelle

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    man richtet den User ein

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    man gibt dem user die notwendigen Rechte für die Datenbank

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    und dein WordPress löscht du bitte

    https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-20-04
     
  8. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.658
    Zustimmungen:
    1.781
    @karx11erx Welche genaue Fehlermeldung wird denn mit diesen Zugangsdaten in einem einfachen PHP Script wie im Beispiel hier ausserhalb von WordPress ausgegeben?
     
    karx11erx gefällt das.
  9. karx11erx

    karx11erx Member

    Registriert seit:
    19. April 2021
    Beiträge:
    12
    Zustimmungen:
    0
    @r23: Datenbank hatte ich natürlich vorher eingerichtet - siehe Tutorial. Dass die DB da ist, kann man auch am Ergebnis der GRANTS-Abfrage in mysql sehen. Habe db und user inzwischen auch umbenannt (wordpress_db und wordpress_user). Im Prinzip ist es aber egal, wie man die nennt. mysql unterscheidet anhand des Kontexts.

    mysql_secure_installation hatte ich gemacht.

    Das einzige, was ich nicht getestet habe ist, ob die Anbindung von php an mysql funktioniert (wie mit der Test-Tabelle in dem von Dir verlinkten Artikel). Das werde ich nachholen.

    Wieso sollte ich WordPress löschen? Mir geht es genau um eine funktionierende WordPress-Installation.

    @b3317133: Mit welchen Zugangsdaten? Bei welchem Aufruf? Ich kann Dir leider nicht folgen.
     
    #9 karx11erx, 19. April 2021
    Zuletzt bearbeitet: 19. April 2021
  10. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.658
    Zustimmungen:
    1.781
    Mit den von Dir für WordPress angelegten Zugangsdaten beim Aufruf des verlinkten Beispiels in einer eigenen PHP-Datei.
     
    karx11erx gefällt das.
  11. karx11erx

    karx11erx Member

    Registriert seit:
    19. April 2021
    Beiträge:
    12
    Zustimmungen:
    0
    Das Skript (wordpress.descent2.de/mysql-test.php) meldet Fehler 1045.

    Wenn ich mysql mit denselben Credentials usw. direkt in der Konsole aufrufe (mysql -u wordpress_user -p) aufrufe, geht alles.

    Kann es am Port liegen? 3606 und 36060 sind offen, aber den SSH-Port meines Servers habe ich geändert und 22 blockiert.

    Evtl. ufw-Einstellungen? Nee, ufw ist auf meinem Server inaktiv.
     
    #11 karx11erx, 19. April 2021
    Zuletzt bearbeitet: 19. April 2021
  12. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.658
    Zustimmungen:
    1.781
    Du hast aber schon Deine WordPress Zugangsdaten dort eingefügt und nicht einfach 1:1 das Script mit dem fake_user usw. kopiert?
     
  13. karx11erx

    karx11erx Member

    Registriert seit:
    19. April 2021
    Beiträge:
    12
    Zustimmungen:
    0
    Ja natürlich. Ich bin von Haus aus Informatiker, nur nicht sehr firm in Linux-Server-Konfiguration. :)

     
  14. b3317133

    b3317133 Well-Known Member

    Registriert seit:
    21. November 2014
    Beiträge:
    11.658
    Zustimmungen:
    1.781
    Ok. Damit weisst Du jetzt also, dass das Problem nicht an der WordPress Installation liegt, sondern generell am Zugriff von PHP aus.

    Evtl. würde sich für weiteres Einsteigen in die Thematik daher auch ein passendes Linux Forum eignen.
     
  15. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Du brauchst php-mysqli
     
  16. karx11erx

    karx11erx Member

    Registriert seit:
    19. April 2021
    Beiträge:
    12
    Zustimmungen:
    0
    Seufz.

    Wieso funktioniert sowas auf einem frisch und nach Anleitung eingerichteten Server nicht?
     
  17. karx11erx

    karx11erx Member

    Registriert seit:
    19. April 2021
    Beiträge:
    12
    Zustimmungen:
    0
    Danke für den Tipp. Wenn ich das installieren will, bekomme ich folgende Meldung:
    Wie installiere ich php-mysqli?
     
  18. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    7.345
    Zustimmungen:
    587
    und du konntest wirklich eine user mit dem gleichen Datenbanknamen *ohne* Fehlermeldung anlegen.

    mit @ unterdrückst du Fehlermeldungen

    mit
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    oder ähnlichem kann man sich die Fehlerausgabe von der Datenbank ausgeben lassen


    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!

    kann man die Verbindung prüfen.

    Mit WordPress war der User WordPress gemeint und die Datenbank Tabelle WordPress. Ist vom Sinn her vergleichbar mit Admin und Passwort 12345. Aber du bist ja der Informatiker https://de.wikipedia.org/wiki/SQL-Injection
     
  19. karx11erx

    karx11erx Member

    Registriert seit:
    19. April 2021
    Beiträge:
    12
    Zustimmungen:
    0
    @r23: Jetzt müsste ich nur noch verstehen, inwiefern mich Deine Beiträge näher zur Lösung meines Problems bringen sollen.

    Wen interessieren denn jetzt Datenbank- und Usernamen und SQL Injection, wenn das Ganze überhaupt nicht funktioniert.

    Wenn Du mir sagen kannst, warum php sich mit korrekten Credentials usw. nicht mit meiner Datenbank verbinden kann, während das manuell vom CLI aus geht, das wäre die Hilfe, die ich jetzt brauche. Alles andere kommt danach.

    Folgendes Skript

    <?php
    try {
    ....if ($db = mysqli_connect("localhost", "wordpress_user", "password", "wordpress_db")) {
    ........echo ("successfully connected to database \n");
    ........}
    ....else {
    ........throw new Exception('Unable to connect');
    ........}
    ....}
    catch(Exception $e) {
    ....echo $e->getMessage();
    ....}
    ?>
    gibt, wenn vom cli aufgerufen ("php -f mysql-test.php") folgende Fehlermeldung

    PHP Warning: mysqli_connect(): (HY000/1045): Access denied
    for user 'wordpress_user'@'localhost' (using password: YES)
    in /var/www/wordpress/mysql-test.php on line 13
    Nach Eingabe von "mysql -u wordpress_user -p" im cli und Eingabe des korrekten Passworts komme ich in mysql rein. Die Datenbank "wordpress_db" existiert dort und "wordpress_user" hat alle Rechte drauf.

    Wenn Du eine gute Idee hast, was hier das Problem ist, dann gerne her damit. Alles andere bringt mich wie gesagt momentan nicht weiter.
     
    #19 karx11erx, 19. April 2021
    Zuletzt bearbeitet: 19. April 2021
  20. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Vergebe bitte einmal die Benutzerrechte explizit:

    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    Michi91 gefällt das.
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden