如图,这是docker-compose配置文件
现在运行
后,我在docker外通过redis-cli
和mysql
可以正常连接到容器内的redis 和 mysql,如下图
可是我的web服务中,如论如何都连接不到mysql,报错如下:
问了很多人,经过指导,在web服务里的host应该写docker-compose配置文件中的service名,如下图
可是并没有什么帮助,还是报上图的错误,已经纠结了一天了,求助
如图,这是docker-compose配置文件
现在运行
后,我在docker外通过redis-cli
和mysql
可以正常连接到容器内的redis 和 mysql,如下图
可是我的web服务中,如论如何都连接不到mysql,报错如下:
问了很多人,经过指导,在web服务里的host应该写docker-compose配置文件中的service名,如下图
可是并没有什么帮助,还是报上图的错误,已经纠结了一天了,求助
报错提示“Client does not support authentication protocol"。
看你配置,应该是你在node web内的服务器配置有问题吧,你的mysql配置是有root用户和密码的,建议你把这些都写到你的nodejs配置里。
也可以通过mysql链接后创建用户和密码。以下示例代码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'
docker-compose 添加定义下 networks :
version: '3'
services:
web:
networks: # 自定义网络
- my-network
mysql:
networks: # 同一个网络
- my-network
networks:
my-network:
2 回答966 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
5 回答1.5k 阅读
5 回答2.3k 阅读
2 回答2.2k 阅读
1 回答1.6k 阅读✓ 已解决
现在mysql的最新镜像是8.0,建议使用5.7.22试试,另外compose里建议使用网络别名直接别名当作连接目标的host来使用docker的网络里维持的dns
你的问题排查的话去web容器里ping下mysql的服务名看能返回ip否,或者docker run -ti --rm --net:container:web的容器id zhangguanzhang/alpine sh来使用web容器同一个network namespace去排查
进去后telnet mysql 3389看看是否能通