Docker-Compose WordPress MySql kann keine Verbindung herstellen

Lesezeit: 6 Minuten

Benutzer-Avatar
Kyle Calica-St

Ich erhalte einen 502-Gateway-Fehler, während ich versuche, eine Verbindung zu meiner WordPress-Site herzustellen. Wenn ich mir die Protokolle ansehe, habe ich diesen Fehler.

MySQL Connection Error: (1045) Access denied for user 'root'@'172.23.0.3' (using password: YES)

Es scheint zu funktionieren, wenn ich die Passwörter nicht ändere und sie alle anbehalte WordPress. Ich gehe davon aus, dass die Dockerfiles nur die Standardpasswörter verwenden, aber nachdem ich sie mir angesehen habe, sehe ich nur, dass sie aus der Umgebung greifen. Aber es scheint nicht von meiner Umgebung zu nehmen, die ich eingestellt habe.

version: '2'
services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: *****
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: *****

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8085:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_PASSWORD: ******
volumes:
    db_data:

Ich möchte, dass das ***** dasselbe Passwort ist.

Hier ist ein Dump meiner WordPress-Variablen:

HOSTNAME=55333eceeda8
PHP_INI_DIR=/usr/local/etc/php
PHP_ASC_URL=https://secure.php.net/get/php-5.6.30.tar.xz.asc/from/this/mirror
WORDPRESS_DB_PASSWORD=test
PHP_CFLAGS=-fstack-protector-strong -fpic -fpie -O2
PHP_MD5=68753955a8964ae49064c6424f81eb3e
PHPIZE_DEPS=autoconf        file        g++         gcc         libc-dev        make        pkg-config      re2c
PHP_URL=https://secure.php.net/get/php-5.6.30.tar.xz/from/this/mirror
WORDPRESS_DB_HOST=db:3306
WORDPRESS_VERSION=4.7.2
PHP_LDFLAGS=-Wl,-O1 -Wl,--hash-style=both -pie
APACHE_ENVVARS=/etc/apache2/envvars
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
GPG_KEYS=0BD78B5F97500D450838F95DFE857D9A90D90EC1 6E4F6AB321FDC07F2C332E3AC2BF0BC433CFC8B3
PHP_CPPFLAGS=-fstack-protector-strong -fpic -fpie -O2
PWD=/var/www/html
SHLVL=1
HOME=/root
PHP_SHA256=a363185c786432f75e3c7ff956b49c3369c3f6906a6b10459f8d1ddc22f70805
WORDPRESS_SHA1=7b687f1af589c337124e6247229af209ec1d52c3
APACHE_CONFDIR=/etc/apache2
PHP_EXTRA_BUILD_DEPS=apache2-dev
PHP_VERSION=5.6.30
PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2
_=/usr/bin/env

Ich sehe das Datenbankpasswort darin. Hier sind die SQL-Dateien:

root@50ec696f0f67:/# env                                                                                                                                                                                   
HOSTNAME=50ec696f0f67
MYSQL_VERSION=5.7.17-1debian8
MYSQL_DATABASE=wordpress
MYSQL_PASSWORD=test
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
SHLVL=1
HOME=/root
MYSQL_MAJOR=5.7
GOSU_VERSION=1.7
MYSQL_USER=wordpress
MYSQL_ROOT_PASSWORD=test
_=/usr/bin/env

Ich sehe hier beide Passwörter. Aus irgendeinem Grund wird mein WordPress-Container vom MySQL-Container abgelehnt.

  • Und Sie verwenden die env-Variablen in WordPress? Haben Sie versucht, die von WordPress verwendeten Variablen zu sichern, um festzustellen, ob es sich um die env-Variablen handelt?

    – Mickadoo

    16. Februar 2017 um 15:04 Uhr

  • Ich dachte, ich hätte sie mit der Docker-Compose-Datei gesendet. Aber ich werde sie inspizieren und ablegen und posten, was ich bekomme.

    – Kyle Calica-St

    16. Februar 2017 um 17:45 Uhr

  • Sie könnten Recht haben, ich bin mit WordPress nicht so vertraut, aber ich habe mich nur gefragt, ob sie vielleicht von etwas fest codiertem überschrieben werden

    – Mickadoo

    16. Februar 2017 um 17:50 Uhr

  • Nun, ich gehe davon aus, dass WordPress einige Umgebungsvariablen verwendet, wenn dort WORDPRESS_DB_HOST abgerufen wird. Ist MYSQL_ROOT_PASSWORD das gleiche wie MYSQL_PASSWORD? Vielleicht könnten Sie im WordPress-Quellcode die verwendeten Variablen direkt vor dem Versuch der DB-Verbindung ausgeben. Führen Sie dann in den db-Container aus und prüfen Sie, ob Sie sich mit diesen Details anmelden können. Etwas stimmt nicht zwischen den beiden – graben Sie einfach weiter!

    – Mickadoo

    17. Februar 2017 um 9:13 Uhr

  • Auch hier bin ich kein Experte für WordPress, aber unterstützt es die Verwendung von Umgebungsvariablen von Haus aus? Vielleicht verwendet es die Werte, die Sie während des Setups für Ihr Passwort verwendet haben? Verwendet deine wp-config.php die Umgebungsvariablen?

    – Mickadoo

    17. Februar 2017 um 9:27 Uhr

WARNUNG: Dies war der einzige Container, den ich auf meinem Server hatte, also machte es mir nichts aus, alles zu löschen. Das blinde Ausführen dieser Befehle kann alle Ihre Docker-Container, Volumes usw. löschen.

Ich konnte mein Problem lösen, indem ich das Docker-Volume löschte.

Auch wenn Sie diesen Befehl ausführen:

$ docker-compose stop && docker-compose rm -v

entfernt keine Volumes.

Jedes Mal, wenn ich versuchte, einen neuen Docker-Container zu erstellen, verwendete er mein altes Volume, das meine alte MySQL-Datenbank mit meiner alten MySQL-Benutzertabelle speicherte, also mein altes Passwort, das ich ändern würde und falsch war.

Um alte Docker-Volumes loszuwerden, verwenden Sie:

docker volume rm $(docker volume ls -q )

entfernt alle Docker-Volumes. dann neu erstellen, wodurch ein neues Volume mit einer aktualisierten Tabelle von Ihrer erstellt wird env Variablen.

  • Ahh, das macht jetzt Sinn. Im Nachhinein immer einfach 🙂 Schön, dass du der Sache auf den Grund gegangen bist

    – Mickadoo

    20. Februar 2017 um 9:26 Uhr

  • Danke! Ihre Hilfe war sehr nützlich und geschätzt 😀

    – Kyle Calica-St

    20. Februar 2017 um 10:56 Uhr

  • Ah vielen Dank. Ich war verrückt nach der Suche, warum das Löschen von Containern oder Bildern das mysql-Passwortproblem nicht löst. Alle Daten waren in den Bänden. Das Löschen des DB-Volumes löste das Problem.

    – Schnigi

    30. Januar 2019 um 9:27 Uhr

  • @Shnigi hah ja! Ich wurde auch wahnsinnig! Ich glaube, Docker muss beim Löschen von Containern und Bildern ausführlicher sein. Vielleicht eine andere Entfernungsmethode, bei der alles atomisiert wird, aber ich bin mir sicher, dass das der unterste Punkt des Totempfahls für das Team ist, haha.

    – Kyle Calica-St

    30. Januar 2019 um 16:49 Uhr

Benutzer-Avatar
Sahil Ahuja

Ein funktionierendes Beispiel mit Änderungen an Ihrem Docker-Compose: https://github.com/sahil87/wordpress-mysql-docker/blob/master/docker-compose.yml

Änderungen:

Erstellen Sie WORDPRESS_DB_HOST

WORDPRESS_DB_HOST: foldername_db_1.foldername_default:3306

Dies scheint eine kürzliche Änderung in der Art und Weise zu sein, wie entweder Docker-Compose oder nur das MySQL-Image funktioniert, da selbst ich nur das verwende. Konnte keine Dokumentation darüber finden 🙁 , hat 2 Tage gedauert, um es herauszufinden. Ich hoffe, das spart Ihnen etwas Zeit!

  • funktioniert nicht. bekomme noch: Warning: mysqli::mysqli(): (HY000/1045): Access denied for user 'root'@'172.23.0.3' (using password: YES) in - on line 22 habe sogar versucht, deine auszuführen.

    – Kyle Calica-St

    18. Februar 2017 um 10:05 Uhr

  • Seltsam. In meiner Version versuchen docker rm $(docker ps -aq); docker-compose up; docker exec -it wordpressmysqldocker_wordpress_1 bash. Einmal im Docker: apt-get update; apt-get install netcat;. Was ist die Ausgabe von nc -zv wordpressmysqldocker_db_1.wordpressmysqldocker_default 3306 ? Versuchen Sie auch, 172.23.0.2 anstelle des mysql-Hostnamens zu verwenden.

    – Sahil Ahuja

    18. Februar 2017 um 10:43 Uhr


  • es waren meine Bände. Ich musste alle meine Volumes mit löschen docker volume rm $(docker volume ls -q) dann hat es geklappt! Ich konnte die alte verwenden docker-compose.yml auch.

    – Kyle Calica-St

    19. Februar 2017 um 21:04 Uhr

1145830cookie-checkDocker-Compose WordPress MySql kann keine Verbindung herstellen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy