升级PHP,MySQL的旧密码问题

我从石器时代inheritance了运行XAMPP安装的Windows 2k3服务器。 我需要升级PHP,以便升级到MediaWiki,以方便一个新的MediaWiki扩展(为了方便一些文档,以方便我的工作,以方便获得付款方便…你明白了)。

然而…安装PHP的新版本会导致PHP的MySQL库拒绝使用MySQL的“旧式”152位密码进行通信。 理论上不成问题。 MySQL的安装是后4.1,所以它应该有function,将用户的密码从152位升级到328位(这是一个奇怪的哈希algorithm…)。

我跑了以下几点:

SET PASSWORD = PASSWORD('foo'); 

在MySQL上,但查询:

 SELECT user, password FROM mysql.user; 

只是返回了我刚开始使用的密码 – 152位。 现在…我怀疑你在想'AHA! 旧密码开启!“。 不幸的是,它不是 – 我已经在configuration中禁用它(明确地将其设置为0),双倍确定我有一个绝对参考该configuration文件,并确保该服务不使用–old-passwords标志。 每次操作后,服务都会重置。

所以我进入另一个系统,并在那里生成了328位散列,将散列复制到第一个MySQL实例。 不幸的是,这也没有奏效(我记得FLUSH PRIVILEGES)。

应用程序错误是:

“'mysqlnd无法使用旧的不安全authentication连接到MySQL 4.1+。请使用pipe理工具[… snip …]

还有什么我可以尝试让PHP识别MySQL不使用“旧的不安全的身份validation”? MySQL似乎被卡在“旧密码”模式,我无法从中解脱出来。

固定。 对于神只知道什么原因的mysql.user表的“密码”列是一个字符(16)。 将其设置为char(41),将从另一个DB生成的散列放到那里,并且很高兴。