概述
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,搞了好久,才找到这个办法解决…