问题修复:连接docker Mysql 报错Access denied for user ‘asiced‘@‘172.17.0.1‘ (using password: NO) macOS,docker

这篇具有很好参考价值的文章主要介绍了问题修复:连接docker Mysql 报错Access denied for user ‘asiced‘@‘172.17.0.1‘ (using password: NO) macOS,docker。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景描述:

项目:SpringMVC+SpringBoot+Mybatis-Plus项目
平台:IntelliJ IDEA 2023.1
操作系统:macOS v13.4
容器平台:Docker

错误信息

springboot 连接 mysql 时报错 using password: no的方案,BUG处理,知识总结,docker,mysql,macos

原因:

看到这种情况出现要知道4个知识点

  1. 如图中的"asiced@172.17.0.1"这个格式为一个mysql的登入账号和主机号地址

  2. 拒绝访问的原因有很多:用户名或密码对不上、没有远程访问权限(常发生在虚拟机之间交互以及使用图形化界面管理工具连接数据库时发生)、对应的"asiced@172.17.0.1"不存在。

  3. XXX@hostaname中的XXX的为您的计算机中注册的用户名

  4. Docker容器管理工具默认的映射端口为172.17.0.1

    显然这种情况下有灵性的小伙伴可以发现,
    访问mysql的用户名和主机号都是默认的。
    

问题排查

  1. 用户名、密码错误,账号权限不足——修改mysql
  2. 排查是否数据库配置文件载入成功(如application.yml、jdbc.properties、myotis-config.xml等)——检查Target目录是否有资源编译成功的字节码文件
  3. 配置文件被覆盖——删除多余的配置文件

问题解决

一、配置用户名、密码、账号权限

0)如果使用了Docker来管理Mysql,需要先进行这一步

1、查看Docker容器的名字

docker ps

若执行失败,显示守护进程运行异常请查看以下文章

预留位,催更请私信

springboot 连接 mysql 时报错 using password: no的方案,BUG处理,知识总结,docker,mysql,macos
在这个例子中,我们的容器ID位cc97开头,镜像位mysql:latest(最新的意思),名字则是"mysql"(因为表格行比较长,所以表头和内容都被折行显示)
2、进入容器,我们使用Container ID来操控容器

docker exec -it mysql bash

springboot 连接 mysql 时报错 using password: no的方案,BUG处理,知识总结,docker,mysql,macos

执行完以后进入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) 检查配置文件是否被成功载入

springboot 连接 mysql 时报错 using password: no的方案,BUG处理,知识总结,docker,mysql,macos
springboot 连接 mysql 时报错 using password: no的方案,BUG处理,知识总结,docker,mysql,macos
我们可以检查target目录中是否有资源文件

2.1)若没有载入成功的解决方法一

通过项目构建工具重新编译资源文件

例如使用Maven工具
springboot 连接 mysql 时报错 using password: no的方案,BUG处理,知识总结,docker,mysql,macos
双击就行

2.1)若没有载入成功的解决方法二

设置资源过滤

此处预留 催更请私信

3)配置被覆盖问题(此处重点

springboot 连接 mysql 时报错 using password: no的方案,BUG处理,知识总结,docker,mysql,macos
在这个情况中application是被成功载入的
与此同时我们还写了一个配置类⬇️
springboot 连接 mysql 时报错 using password: no的方案,BUG处理,知识总结,docker,mysql,macos

红框框起来的配置,将application.yml中的配置覆盖了,并且里面没有添加任何参数,导致配置信息为空。

3.1)解决方法1:为配置类添加配置

springboot 连接 mysql 时报错 using password: no的方案,BUG处理,知识总结,docker,mysql,macos文章来源地址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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包