概述

docker运行MySQL8.0.27。

docker run --name mysql \
 -v /Users/abc/docker/mysql/conf.d:/etc/mysql/conf.d \
 -v /Users/abc/docker/mysql/data:/var/lib/mysql \
 -e MYSQL_ROOT_PASSWORD=root9876 \
 -p 3306:3306 \
 -d mysql:8.0.27

成功创建了docker容器后,Navicat能正常连接,但通过IDEA无法连接到数据库!!

猜测的原因

MySQL8.0.x 比较新的版本,密码插件默认使用:caching_sha2_password。而IDEA没有这个密码插件,因此无法连接MySQL。比较老的Navicat没有这个插件支持,也是无法连接的。

解决办法:更改用户的密码插件策略

可先通过以下SQL语句查询确认。

select user, plugin from mysql.user;

结果为:

user plugin
root caching_sha2_password

现在需要把caching_sha2_password 改为: mysql_native_password

# 用户:root; host: %; 密码: password;  -- 要修改哪个用户、host请自行更改
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;

至此,我的IDEA能正常连接了。

mmp,搞了好久,才找到这个办法解决…

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐