编辑:这仅适用于您控制MySQL服务器的情况.如果你不是在看Mysql password hashing method old vs new
首先判断SQL查询
SHOW VARIABLES LIKE 'old_passwords'
(在MySQL命令行客户端中,HeidiSQL或您喜欢的任何前端)服务器是否默认设置为使用旧密码模式.如果返回old_passwords,Off
,那么您只是碰巧user
表中有旧密码条目.MySQL服务器将对这些帐户使用旧的身份验证 routine .您只需为该帐户设置一个新密码,就会使用新的 routine .
您可以通过查看mysql.user
表(具有访问该表的帐户)来判断将使用哪个 routine
SELECT `User`, `Host`, Length(`Password`) FROM mysql.user
对于使用旧密码的帐户,这将返回16,对于使用新密码的帐户,这将返回41(对于完全没有密码的帐户,这将返回0,您可能还需要处理这些问题)
SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges;
(将User
和Host
替换为您从上一个查询中获得的值.)然后再次判断密码的长度.现在应该是41,您的客户端(例如mysqlnd)应该能够连接到服务器.
另请参阅MySQL文档:
*http://dev.mysql.com/doc/refman/5.0/en/old-client.html
*http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html
*http://dev.mysql.com/doc/refman/5.0/en/set-password.html