Docker-Compose WordPress MySql无法连接

时间:2017-02-16 12:20:59

标签: mysql wordpress docker docker-compose dockerfile

尝试连接到我的WordPress网站时遇到502网关错误。 看着日志我有这个错误。

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的:

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

我在这里看到两个密码。所以由于某种原因,我的wordpress容器被mysql容器拒绝了。

2 个答案:

答案 0 :(得分:5)

警告:这是我服务器上唯一的容器,所以我不介意删除所有内容。盲目地运行这些命令可以清除所有的docker容器,卷等。

我能够通过删除docker音量来解决我的问题。

即使您运行此命令:

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

不会删除卷。

每当我尝试创建一个新的docker容器时,它使用我的旧卷将旧的mysql数据库存储在我的旧mysql用户表中,因此我的旧密码会更改并且错误。

摆脱旧的docker卷使用:

docker volume rm $(docker volume ls -q )

将删除所有docker卷。然后重建将使用env变量中的更新表创建一个新卷。

答案 1 :(得分:1)

修改了docker-compose的工作示例: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工作方式或mysql图像的最近改变,因为即使我只使用它。无法找到任何关于它的文件:(花了2天的时间来弄明白。希望这能节省你一些时间!