docker MySQL出现Access denied for user ‘root‘@‘****‘ (using password: YES)解决

本文详细介绍了在Docker环境下,如何解决因权限设置不当导致的MySQL数据库连接失败问题。通过调整MySQL容器内的用户权限,成功解决了API服务无法连接数据库的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先有必要说明下,172.17.0.2 是我访问mysql容器的应用容器IP
环境说明

宿主机,ubuntu
容器1: docker_for_api ,提供应用的API服务。
容器2: docker_for_web,提供应用的后台管理页面。
容器3: docker_for_mysql ,数据库容器。

问题复现

程序中突然就出现了
Access denied for user ‘root’@‘172.17.0.2’ (using password: YES)
的错误,因为,我的API中连接数据库 是 这样配置的。
在这里插入图片描述
在这里插入图片描述

一直以为是docker_for_api 这个容器有缓存啥的问题。搞了好久。后来才返现就是docker_for_mysql这个容器的问题。(权限问题,后来网上找的解决办法,然后结合我自己的服务部署的实际情况。)

好,进入正题,解决方案

假设你现在已经在你的宿主机了
进入docker_for_mysql 这个容器

docker exec -it mymysql bash

用命令进入mysql 中
在这里插入图片描述

在这里插入图片描述
(我想把下面的语句称之为降权,不知道说不说的过去。)

grant all privileges on *.* to root@'%' identified by '123456' with grant option;

不出意外的话会有个 “Query Ok"
在这里插入图片描述

在这里插入图片描述
下面刷新下权限

flush privileges;

在这里插入图片描述

在这里插入图片描述
结果可能与你们有点出入,因为我是为了截图,都是第二次输入的命令。总之有OK字样是没问题的,最后exit;

exit;

最后 你再用工具连接测试 发现一切正常了。

没成功的话,继续去找解决方案把。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值