浅析docker-compose部署mysql无法访问的问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
浅析docker-compose部署mysql⽆法访问的问题
什么是Docker-Compose
Compose项⽬来源于之前的fig项⽬,使⽤python语⾔编写,与docker/swarm配合度很⾼。
Compose 是 Docker 容器进⾏编排的⼯具,定义和运⾏多容器的应⽤,可以⼀条命令启动多个容器,使⽤Docker Compose不再需要使⽤shell脚本来启动容器。
Compose 通过⼀个配置⽂件来管理多个Docker容器,在配置⽂件中,所有的容器通过services来定义,然后使⽤docker-compose脚本来启动,停⽌和重启应⽤,和应⽤中的服务以及所有依赖服务的容器,⾮常适合组合使⽤多个容器进⾏开发的场景。
docker-compose默认的模板⽂件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或build 指令(需要 Dockerfile)来⾃动构建。
使⽤ Compose 基本会有如下三步流程:
1.在 Dockfile 中定义你的应⽤环境,使其可以在任何地⽅复制。
2.在 docker-compose.yml 中定义组成应⽤程序的服务,以便它们可以在隔离的环境中⼀起运⾏。
3.最后,运⾏dcoker-compose up,Compose 将启动并运⾏整个应⽤程序。
下⾯看下docker-compose部署mysql⽆法访问的问题。
这个问题困扰了我很久,当使⽤docker-compose部署mysql之后,进⾏容器后,使⽤mysql -u root -p是可以访问的,⽽使⽤sql客户端却是⽆法连接的,于是在google上找了很多资料,终于被我发现,添加command: --default-authentication-
plugin=mysql_native_password 即可解决这个问题,它还是和密码加密⽅式有关。
version: "3.3"
services:
Redis:
image: sameersbn/redis:latest
ports:
- "6379:6379"
volumes:
- redis_data:/var/lib/redis
restart: always
mysql:
image: mysql:latest
restart: always
command: --default-authentication-plugin=mysql_native_password #这⾏代码解决⽆法访问的问题
networks:
- dev
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: abc123
MYSQL_USER: 'test'
MYSQL_PASS: 'test'
volumes:
- mysql_data:/var/lib/mysql
networks:
dev:
driver: bridge
volumes:
redis_data:
mysql_data:
总结
以上所述是⼩编给⼤家介绍的docker-compose部署mysql⽆法访问的问题,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
在此也⾮常感谢⼤家对⽹站的⽀持!。