场景描述:
项目:SpringMVC+SpringBoot+Mybatis-Plus项目
平台:IntelliJ IDEA 2023.1
操作系统:macOS v13.4
容器平台:Docker
错误信息
原因:
看到这种情况出现要知道4个知识点:
-
如图中的"asiced@172.17.0.1"这个格式为一个mysql的登入账号和主机号地址
-
拒绝访问的原因有很多:用户名或密码对不上、没有远程访问权限(常发生在虚拟机之间交互以及使用图形化界面管理工具连接数据库时发生)、对应的"asiced@172.17.0.1"不存在。
-
XXX@hostaname中的XXX的为您的计算机中注册的用户名
-
Docker容器管理工具默认的映射端口为172.17.0.1
显然这种情况下有灵性的小伙伴可以发现, 访问mysql的用户名和主机号都是默认的。
问题排查
- 用户名、密码错误,账号权限不足——修改mysql
- 排查是否数据库配置文件载入成功(如application.yml、jdbc.properties、myotis-config.xml等)——检查Target目录是否有资源编译成功的字节码文件
- 配置文件被覆盖——删除多余的配置文件
问题解决
一、配置用户名、密码、账号权限
0)如果使用了Docker来管理Mysql,需要先进行这一步
1、查看Docker容器的名字
docker ps
若执行失败,显示守护进程运行异常请查看以下文章
预留位,催更请私信
在这个例子中,我们的容器ID位cc97开头,镜像位mysql:latest(最新的意思),名字则是"mysql"(因为表格行比较长,所以表头和内容都被折行显示)
2、进入容器,我们使用Container ID来操控容器
docker exec -it mysql bash
执行完以后进入bash-4.4#命令行,具体参数可以通过 docker --help 来理解其含义。现在已经成功进入容器。
1)忘记密码的情况
#1、停止mysql服务
#macOS命令
sudo lunchctl stop mysql
#Linux命令
sudo systemctl stop mysql
#2、绕过安全系统登陆
mysqld --skip-grant-tables
#3、进入mysql
mysql -u root
1.1)修改用户名、主机、密码
#1、切换数据库
use mysql;
#2、查看用户名、主机,密码为加密过的 不用看
select user,host,authentication_string from user;
#3、修改数据
UPDATE user SET user='修改后的名字',host='修改后的主机',authentication_string='修改后的密码' WHERE user='当前的用户名' AND host = '%';
# % 的含义为匹配所有其他地址
#3、刷新
flush privileges;
1.2)刷新权限
#1、给权限
grant all privileges on *.* to 'root'@'%';
#2、刷新
flush privileges;
2) 检查配置文件是否被成功载入
我们可以检查target目录中是否有资源文件
2.1)若没有载入成功的解决方法一
通过项目构建工具重新编译资源文件
例如使用Maven工具
双击就行
2.1)若没有载入成功的解决方法二
设置资源过滤
此处预留 催更请私信
3)配置被覆盖问题(此处重点
在这个情况中application是被成功载入的
与此同时我们还写了一个配置类⬇️
红框框起来的配置,将application.yml中的配置覆盖了,并且里面没有添加任何参数,导致配置信息为空。文章来源:https://www.toymoban.com/news/detail-776457.html
3.1)解决方法1:为配置类添加配置
文章来源地址https://www.toymoban.com/news/detail-776457.html
3.2)解决方法2:删除此配置方法,使用application.yml文件配置springboot
到了这里,关于问题修复:连接docker Mysql 报错Access denied for user ‘asiced‘@‘172.17.0.1‘ (using password: NO) macOS,docker的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!