我想部署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\u root\u host没有帮助。当我尝试从db容器连接到mysql时:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
我真的不知道怎么处理这个魔法。。。谢谢。
3条答案
按热度按时间xghobddn1#
在docker的genetal设置中,启用不带tls的守护程序。我认为这很管用。
docker图像
zaq34kh62#
我重新创建了您的设置,只是添加了一些env配置来实现这一点,我删除了volumes部分,因为它没有问题:
docker-compose.yml公司
使用访问phpmyadminroot:rootpasswd works 好的。
f45qwnt83#
如果本地系统上的文件是以损坏的方式创建的,或者docker守护程序无法正确访问,则可能会发生此问题。这可能是由于以下原因:
docker缺少对本地硬盘的访问权限,例如在windows上。
C
.在构建容器时,docker没有访问本地硬盘驱动器的权限。即使docker第一次问
--build
允许访问的进程C
在windows上,这些文件可能仍然损坏。解决方法是在docker被授予访问权限后删除相应的本地文件,在您的情况下,这些文件是
/~mysql
文件呢mysql.cnf
.