You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDBC连接MySQL报Access denied,根源为项目UTF-16编码问题

关于MySQL Access Denied错误的排查与解决

先给你梳理下这个问题的来龙去脉和最终解决办法——你遇到的这个Access denied错误确实很棘手,毕竟同个账号在Maven项目和Hibernate里都能正常用,偏偏普通Java项目连不上。

你已经做过的有效排查

你已经排除了很多常见问题:

  • 数据库URL、账号密码、权限都没问题(已有项目验证过)
  • 复制了Maven项目的驱动包,甚至更换了不同版本的mysql-connector(包括5.1.8),错误依旧
  • 查询mysql.user表确认了root@localhost用户存在:
+---------+-----------+
| user    | host      |
+---------+-----------+
| newuser | localhost |
| root    | localhost |
+---------+-----------+

最终发现的隐蔽原因

这个问题的根源藏在项目编码设置里:

  • 你的普通Java项目默认编码是UTF-16,而非常规的UTF-8
  • 代码中写的密码是以UTF-16编码存储的,实际传输给MySQL的字节值和你看到的明文不一致
  • MySQL收到错误的密码,自然返回了Access denied验证失败

解决方法

只需把项目及文件编码统一改成UTF-8即可:

  • 修改项目的全局编码设置为UTF-8
  • 确认代码文件的编码也设置为UTF-8
  • 重新确认代码中的密码内容,确保存储的是正确的UTF-8编码值

这样调整后,应用发送的密码就能和MySQL端存储的一致,连接问题就解决了。

内容的提问来源于stack exchange,提问作者mameo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:47:02