Windows 10下IntelliJ IDEA无法连接Docker中的MariaDB容器:提示Access denied求助
Windows 10下IntelliJ IDEA无法连接Docker中的MariaDB容器:提示Access denied求助
我之前在Windows环境折腾Docker容器数据库连接时,也碰到过几乎一模一样的问题!结合你的情况,给你几个亲测有效的排查和解决思路,一步步来应该能搞定:
1. 先把连接地址从localhost换成127.0.0.1试试
Windows下的localhost解析有时候会因为WSL2/Hyper-V的网络机制“抽风”——明明端口映射好了,但用localhost连接时,请求可能没正确转发到容器里。你直接在IDEA的数据库连接配置里,把主机地址改成127.0.0.1,端口保持3306,再点测试连接,大概率能解决问题。
如果还是不行,那就查一下容器的实际IP,用IP直接连:
执行命令获取容器IP:
docker inspect mariadb-container | findstr IPAddress
把得到的IP(比如172.17.0.2)填到IDEA的主机地址里,再试一次。
2. 重新重置容器内用户的密码权限
虽然你看到user的Host是%(允许任意地址连接),但有时候容器初始化时的密码哈希可能和主机端的验证不匹配。进入容器重新设置一遍密码:
- 先进入容器的MariaDB命令行:
docker exec -it mariadb-container mariadb -u root -p
输入root密码(你设置的password)后,执行SQL语句重置用户密码:
ALTER USER 'user'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
这里密码要和你启动容器时的MYSQL_PASSWORD保持一致,重置后再回到IDEA测试连接。
3. 检查IDEA的连接配置细节
别小看这些细节,有时候就是这里出问题:
- 确认数据库类型选的是MariaDB,不是MySQL(虽然两者兼容,但驱动和验证逻辑有细微差别)
- 取消勾选“Use SSL”选项(MariaDB默认不需要SSL连接,IDEA有时候会默认勾选)
- 点击“Test Connection”前,先点击“Download”按钮,下载适配最新MariaDB版本的驱动,旧驱动可能会导致验证失败
4. 排查Docker Desktop的网络设置
如果上面的方法都没用,看看Docker的网络后端是不是有问题:
- 打开Docker Desktop的设置,进入「Resources」→「WSL Integration」,确保你正在使用的WSL发行版(比如Ubuntu)是开启状态
- 可以试试切换Docker的后端:如果当前用的是WSL2,切换到Hyper-V;如果是Hyper-V,切换到WSL2。切换后重启Docker,再重新启动MariaDB容器测试
5. 检查Windows的hosts文件
有时候hosts文件的异常映射也会导致连接问题:
打开C:\Windows\System32\drivers\etc\hosts文件,查看localhost的映射:
- 如果有
::1 localhost(IPv6映射),可以把这一行注释掉(前面加#),只保留127.0.0.1 localhost - 保存文件后,重启IDEA再试连接
按照这个顺序一步步排查,应该能解决你的问题!我当时就是换了127.0.0.1就直接连上了,你先试试第一个方法~




