如何修复 java.sql.SQLException:服务器 运行 处于 --secure-auth 模式,但 'user'@'host' 具有旧格式的密码; (...)?

How to fix java.sql.SQLException: Server is running in --secure-auth mode, but 'user'@'host' has a password in the old format; (...)?

将 MySQL 5.1 升级到 5.6 后,尝试启动 JBoss 失败,出现以下异常:

java.sql.SQLException: 
  Server is running in --secure-auth mode, but 'user'@'localhost' 
  has a password in the old format;  please change the password to the new format

如何解决这个问题?

首先,您需要找到 my.cnf 文件,该文件应位于以下路径:

MySQL Server 5.6\my.cnf

接下来找到显示 old_passwords=0 的行并将其更改为 old_passwords=1。这将告诉 MySQL 使用兼容的密码哈希算法,一直追溯到 4.0 版,它涵盖了您的用例。

现在当您启动服务器时,密码问题应该会消失。如果你想升级你的密码到最新版本,那么你可以为每个用户 使用 SET PASSWORD 和标志 old_passwords=0.

请记住 MySQL 出于安全原因升级了他们的密码算法,因此您不应将设置 old_passwords=1 视为长期解决方案。

有关详细信息,请参阅 here

此问题已由以下人员修复:

1) 更新 'user' 用户的密码哈希值

UPDATE mysql.user set password = PASSWORD('my password text') where user= 'user';

2) 停止 'mysql' 服务器

/etc/init.d/mysql stop

3)/etc/my.cnf 文件

上设置标志 old_passwords=1

4) 启动 'mysql' 服务器

/etc/init.d/mysql start

另请参阅文档:MySQL password hashing

在我的例子中,密码用户不正确。 而不是像 dbname_userName 我只是给了 userName。 重新检查用户名、密码等后,我更正了它们,运行 成功了。

将 JBOSS 用户的密码重置为之前的密码。新版本的 MySQL 将使用新的强算法进行哈希处理,然后重新开始工作。

就我而言,这是通过关闭安全身份验证解决的。

编辑/etc/my.cnf

在[mysqld]段下添加:

old_passwords=1
secure-auth=false