- 在my.cnf中删除或评论old_passwords = 1
重新启动MySQL。如果不这样做,MySQL将继续使用旧的密码格式,这意味着您无法使用内置的PASSWORD()散列函数来升级密码。
旧密码哈希值为16个字符,新密码哈希值为41个字符。
- 连接到数据库,并运行以下查询:
SELECt user, Length(`Password`) FROM `mysql`.`user`;
这将向您显示哪些密码是旧格式,例如:
+ ---------- + -------------------- +| 用户| 长度(`密码`)|+ ---------- + -------------------- +| 根| 41 || 根| 16 || user2 | 16 || user2 | 16 |+ ---------- + -------------------- +
请注意,每个用户可以有多行(每个不同的主机规范对应一行)。
要更新每个用户的密码,请运行以下命令:
UPDATE mysql.user SET Password = PASSWORd('password') WHERe user = 'username';最后,刷新特权:
FLUSH PRIVILEGES;
来源:如何在PHP5.3上修复“ mysqlnd无法使用旧认证连接到MySQL
4.1+”



