2017-02-16 4 views
0

Я получаю ошибку шлюза 502 при попытке подключиться к моему сайту WordPress. Глядя на журналы, у меня есть эта ошибка.Docker-Compose WordPress MySql не удается подключиться

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

Это похоже на работу, когда я не меняю пароли и держать их все на WordPress. Я предполагаю, что dockerfiles просто используют пароли по умолчанию, но, посмотрев на них, я вижу только их захват из среды. Но это не похоже на мою среду, которую я установил.

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: 

Я хочу, чтобы ***** был тем же самым паролем.

Вот свалка моих WordPress переменных:

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 

Я вижу пароль базы данных там. Вот SQL:

[email protected]:/# 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 

Я вижу оба пароля здесь. Поэтому по какой-то причине мой контейнер wordpress лишается контейнера mysql.

+1

И вы используете переменные env в wordpress?Вы пытались сбросить переменные, используемые wordpress, чтобы проверить, являются ли это переменными env? – mickadoo

+0

Мне показалось, что я отправил их, используя файл для докеры. Но я приложу их туда и сбрасываю и отправляю то, что получаю. –

+0

Возможно, вы правы, я не очень хорошо знаком с wordpress, но мне просто интересно, может быть, они переписываются чем-то жестко закодированным. – mickadoo

ответ

3

ВНИМАНИЕ: Это был единственный контейнер, который у меня был на моем сервере, поэтому я не прочь удалить все. Выполнение этих команд слепо может уничтожить все ваши Docker контейнеры, объемы и т.д.

Я был в состоянии решить мою проблему, удалив объем Docker

Даже при выполнении этой команды:.

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

не удаляет объемы.

Каждый раз, когда я пытался создать новый контейнер для докеров, он использовал мой старый том, который хранил мою старую базу данных mysql с моей старой таблицей пользователей mysql, таким образом, мой старый пароль, который я бы изменил и был не прав.

, чтобы избавиться от старых томов докеров использовать:

docker volume rm $(docker volume ls -q)

удалит все тома Докер. затем перестройте, который создаст новый том с обновленной таблицей из ваших env переменных.

+1

Ahh, это имеет смысл сейчас. Всегда легко в ретроспективе :-) Рад, что ты добрался до конца – mickadoo

+1

спасибо! Ваша помощь была очень полезна и ценилась: D –

1

рабочий пример с изменениями в вашем Докер-композе: https://github.com/sahil87/wordpress-mysql-docker/blob/master/docker-compose.yml

Изменения:

сделать WORDPRESS_DB_HOST

WORDPRESS_DB_HOST: foldername_db_1.foldername_default:3306

Это, кажется, недавние изменения в пути либо docker-compose works или просто образ mysql, так как даже я использую только это. Не удалось найти документацию на нем :(, потребовалось 2 дня, чтобы понять. Надеюсь, это сэкономит вам некоторое время!

+0

не работал. все еще получаю: 'Предупреждение: mysqli :: mysqli(): (HY000/1045): доступ запрещен для пользователя 'root'@'172.23.0.3' (с использованием пароля: YES) в строке 22' даже попробовал запустить ваш. –

+0

Странно. В моей версии попробуйте 'docker rm $ (docker ps -aq); сборщик докеров; docker exec -it wordpressmysqldocker_wordpress_1 bash'. Однажды внутри докера: 'apt-get update; apt-get install netcat; '. Каков вывод 'nc -zv wordpressmysqldocker_db_1.wordpressmysqldocker_default 3306'? Также попробуйте использовать 172.23.0.2 вместо mysql hostname. –

+0

Это были мои тома. Мне пришлось удалить все мои тома, используя 'docker volume rm $ (docker volume ls -q)', тогда он сработал! Я смог использовать старый 'docker-compose.yml'. –

Смежные вопросы