我在尝试连接到我的 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 容器拒绝了。
最佳答案
警告:这是我服务器上唯一的容器,所以我不介意删除所有内容。盲目地运行这些命令可以清除所有 docker 容器、卷等。
我能够通过删除 docker 卷来解决我的问题。
即使您运行此命令:
$ docker-compose 停止 && docker-compose rm -v
不删除卷。
每次我尝试创建一个新的 docker 容器时,它都会使用我的旧卷,该卷将我的旧 mysql 数据库与我的旧 mysql 用户表一起存储,因此我会更改旧密码,但这是错误的。
要摆脱旧的 docker 卷,请使用:
docker volume rm $(docker volume ls -q )
将删除所有 docker 卷。然后重建,这将创建一个新卷,其中包含来自 env
变量的更新表。
关于mysql - Docker-Compose WordPress MySql 无法连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42273823/