使用docker组合,我有一个mysql 5.7数据库容器,设置根密码和用户密码,但它们不起作用,坞-组合:
version: '3.8'
services:
viprs-proxy:
platform: linux/amd64
image: nginx:alpine
container_name: viprs-proxy
depends_on:
- viprs-website
volumes:
- ./nginx/proxy.conf:/etc/nginx/nginx.conf
ports:
- 80:80
networks:
- viprs-net
viprs-website:
platform: linux/amd64
image: nginx
container_name: viprs-website
depends_on:
- php
- viprs-website-database
volumes:
- ./website/nginx/site.conf:/etc/nginx/conf.d/default.conf
- ./website:/usr/share/nginx/html
- ./website/logs:/var/log/nginx
- viprs-uploads:/usr/share/nginx/html/wp-content/uploads
ports:
- 80
links:
- php
networks:
- viprs-net
php:
platform: linux/amd64
#image: php:7-fpm
image: viprs-php
container_name: php
volumes:
- ./website:/usr/share/nginx/html
ports:
- 9000
networks:
- viprs-net
viprs-website-database:
platform: linux/amd64
image: mysql:5.7
container_name: viprs-db
command: --init-file /usr/share/nginx/website.sql
volumes:
- ./website.sql:/usr/share/nginx/website.sql
- viprs-db:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: testpassword
MYSLQ_DATABASE: viprs
MYSQL_USER: viprs
MYSQL_PASSWORD: testpassword
networks:
- viprs-net
networks:
viprs-net:
volumes:
viprs-uploads:
viprs-db:现在,如果我登录bash:
docker exec -it viprs-db bash并尝试登录到mysql:
mysql -u root -p它只是说访问被拒绝,不管我是使用根用户还是viprs用户。
错误1045 (28000):拒绝用户'root'@'localhost‘(使用密码:是)的访问
如果我输出$MYSQL_ROOT_PASSWORD,它会给出:
echo $MYSQL_ROOT_PASSWORD
testpassword我见过很多人在这个问题上,但没有找到任何可行的解决方案。环境是按照对接中心上的图像文档设置的,所以我很困惑。
事实上,我可以在没有密码的情况下以root身份登录,所以有些地方不对劲。
发布于 2022-05-02 15:55:14
只有当容器启动时没有数据库,并且MySQL必须创建一个数据库时,才会使用环境变量。
如果已经有数据库,则使用该数据库中定义的用户,而不创建新用户。因为您在/var/lib/mysql上有一个卷映射,所以您可能已经有了一个数据库。
要验证这是否是问题所在,可以尝试删除/var/lib/mysql映射。这将导致容器在开始使用环境变量值时创建新数据库。
https://stackoverflow.com/questions/72089140
复制相似问题