我很难将MySQL 4.1数据库从旧的16字节密码哈希迁移到新的41字节哈希值。问题是,mysqld服务器自动以“old-passwords = on”指令启动,该指令将新密码设置为41字节长度。
我的问题:有没有人知道如何在没有“old-passwords = on”指令的情况下告诉mysqld运行?我尝试了my.ini,commmandline,在本地设置变量,但没有任何效果。
非常感谢! 菲利普
答案 0 :(得分:1)
要检查的第一件事是mysql数据库中user
表Password
字段的宽度。在4.1之前,这是16个字符宽。升级到4.1时,宽度应该已通过提供的mysql_upgrade
实用程序更改为41个字符。如果由于某种原因错过了该步骤,则服务器将默认使用旧的16字节哈希值,这是您描述的行为。
MySQL文档中有write up。
如果您发现您的表确实需要从char(16)更新为char(41)并且您具有mysql_update实用程序,请运行该实例以完成升级。或者(进行备份然后你可以)使用以下方法手动更新:
ALTER TABLE user
MODIFY Password char(41) character set latin1 collate latin1_bin NOT NULL default ''