我有两个容器,一个用于mariadb,另一个用于wordpress。
我将此配置用于mariadb:
version: "3"
services:
mariadb:
image: mariadb
container_name: mariadb
environment:
MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
volumes:
- ./data:/var/lib/mysql
ports:
- "127.0.0.1:3306:3306"
restart: unless-stopped
networks:
- web
networks:
web:
external: true
这是给WordPress的
version: '3'
services:
# Wordpress
myWordpress:
image: wordpress:php8.1
container_name: myWordpress
hostname: myWordpress
restart: unless-stopped
volumes: [ './data:/var/www/html' ]
environment:
- WORDPRESS_DB_HOST=mariadb
- WORDPRESS_DB_USER="${WORDPRESS_DB_USER}"
- WORDPRESS_DB_PASSWORD="${WORDPRESS_DB_PASSWORD}"
- WORDPRESS_DB_NAME="${WORDPRESS_DB_NAME}"
networks:
- web
networks:
web:
external: true
我已经创建了网络web
并登录到mysql根目录,创建了数据库& user并执行了以下命令:GRANT ALL PRIVILEGES ON wp_db.* TO 'wp_user'@'%';
.
然后我用那个用户和密码登录了mysql。
docker exec -it mariadb bash
mysql -u wp_user -pMyPassword
# Welcome to the MariaDB monitor. Commands end with ; or \g.
# ...
当我访问WordPress时出现该问题,我看到以下消息:
Warning: mysqli_real_connect(): (HY000/1045): Access denied for user '"wp_user"'@'172.16.32.5' (using password: YES) in /var/www/html/wp-includes/wp-db.php on line 1753
Access denied for user '"wp_user"'@'172.16.32.5' (using password: YES)
我觉得问题出在WORDPRESS_DB_HOST
变量中,我将其指向mariadb容器名称,我还尝试将其指向localhost
,因为两个容器共享同一个网络web
,但他的也不起作用,并出现了相同的错误消息。
1条答案
按热度按时间wydwbb8l1#
一个月后,我回到这个问题,并尝试把环境变量在引号中,它的工作和预期的一样。
所以改为:
应该是