【发布时间】:2009-11-29 14:06:11
【问题描述】:
我很难将我的 MySQL 4.1 数据库从旧的 16 字节密码哈希迁移到新的 41 字节哈希。问题是,mysqld 服务器会自动以“old-passwords = on”指令启动,它将新密码的长度限制为 41 字节。
我的问题:有谁知道我如何告诉 mysqld 在没有“old-passwords = on”指令的情况下运行?我尝试了 my.ini、命令行、在本地设置变量,但没有任何效果。
非常感谢! 菲利普
【问题讨论】:
我很难将我的 MySQL 4.1 数据库从旧的 16 字节密码哈希迁移到新的 41 字节哈希。问题是,mysqld 服务器会自动以“old-passwords = on”指令启动,它将新密码的长度限制为 41 字节。
我的问题:有谁知道我如何告诉 mysqld 在没有“old-passwords = on”指令的情况下运行?我尝试了 my.ini、命令行、在本地设置变量,但没有任何效果。
非常感谢! 菲利普
【问题讨论】:
首先要检查的是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 ''
【讨论】: