我想部署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没有帮助。当我尝试从数据库容器连接到mysql时:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
我真的不知道该怎么做... Thx。
我重新创建了您的设置,只是添加了一些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正常。
如果本地系统上的文件是通过损坏的方式创建的,或者无法由Docker守护程序正确访问,则可能会出现此问题。这可能是由于以下原因:
C
。--build
进程中要求允许在Windows上访问C
时,这些文件仍可能已损坏。解决方案可以是在授予对Docker的访问权限后删除相应的本地文件,在您的情况下,这些文件是/~mysql
和mysql.cnf
中的文件。
在Docker的常规设置中,启用不带TLS的守护程序。我认为它有效。