我想部署MySQL + PHPMyAdmin。我的docker-compose.yml:
version: "3"
services:
db:
image: mysql:5.7
restart: always
container_name: db
volumes:
- ./~mysql:/var/lib/mysql
- ./mysql.cnf:/etc/mysql/conf.d/my.cnf
environment:
MYSQL_DATABASE: "dbtest"
MYSQL_ROOT_PASSWORD: "123456"
MYSQL_ROOT_HOST: "%"
networks:
- db
command: --default-authentication-plugin=mysql_native_password
healthcheck:
test: "mysqladmin ping -h localhost"
interval: 1s
timeout: 1s
retries: 60
phpmyadmin:
image: phpmyadmin/phpmyadmin:4.7
restart: always
container_name: phpmyadmin
ports:
- 8080:80
networks:
- external-net
- db
environment:
PMA_HOST: db
depends_on:
- db
networks:
external-net:
external:
name: external-net
db:
driver: bridge
一段时间后,出现主题错误。 MYSQL_ROOT_HOST没有帮助。当我尝试从db-container连接到mysql时:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
我真的不知道该怎么做……Thx。
答案 0 :(得分:2)
如果您本地系统上的文件是以损坏的方式创建的,或者无法由Docker守护程序正确访问,则可能会出现此问题。这可能是由于以下原因:
C
。--build
进程中要求允许在Windows上访问C
时,这些文件仍可能已损坏。解决方案是在授予Docker访问权限后删除相应的本地文件,在您的情况下,这些文件是/~mysql
和mysql.cnf
中的文件。
答案 1 :(得分:0)
我重新创建了设置,只是添加了一些ENV配置来解决问题,我删除了卷部分,因为它没有问题:
docker-compose.yml
version: "3"
services:
db:
image: mysql:5.7
restart: always
container_name: db
environment:
- MYSQL_ROOT_PASSWORD=rootpasswd
- MYSQL_DATABASE=phpmyadmin
- MYSQL_USER=user
- MYSQL_PASSWORD=userpasswd
networks:
- db
command: --default-authentication-plugin=mysql_native_password
healthcheck:
test: "mysqladmin ping -h localhost"
interval: 1s
timeout: 1s
retries: 60
phpmyadmin:
image: phpmyadmin/phpmyadmin:4.7
restart: always
container_name: phpmyadmin
ports:
- 8080:80
networks:
- external-net
- db
environment:
PMA_HOST: db
depends_on:
- db
networks:
external-net:
external:
name: external-net
db:
driver: bridge
使用root:rootpasswd访问PHPMyadmin可以正常工作。
答案 2 :(得分:0)
出于某种原因,在卷路径为我解决问题之前使用了“~”。
Overlap
将此代码更改为
volumes:
- ./~mysql:/var/lib/mysql
- ./mysql.cnf:/etc/mysql/conf.d/my.cnf
用于 MySQL 容器。
答案 3 :(得分:-2)
在Docker的常规设置中,启用不带TLS的守护程序。我认为它有效。