2012年1月

MediaWiki如何重置用户密码

最近在整合UCenter和MediaWiki,以及其他康盛产品,为了能够实现同步更改UCenter的应用的用户密码,必须找到各个应用的加密方式,网上现成的资料很少,经过几天的苦苦寻找,果然功夫不负有心人,最后终于在MediaWiki的手册里找到,具体方法如下(参考:http://www.mediawiki.org/wiki/Manual:FAQ/zh-hans#.E6.88.91.E5.A6.82.E4.BD.95.E6.89.8D.E8.83.BD.E9.87.8D.E7.BD.AE.E5.AF.86.E7.A0.81.EF.BC.9F):
我如何才能重置密码?
您可以使用maintenance/changePassword.PHP维护脚本来重置一名用户的密码。
您必须在命令行下运行该脚本。换句话说,请登录到安装wiki的服务器,然后进入命令行提示符。进入安装目录,然后进入maintenance子目录。运行下列命令:
php changePassword.php --user=someuser --password=somepass
这里可见的“somepass”就是您将要设置的密码,而“someuser”就是您将修改其密码的用户名,该用户名应出现在数据库的“user”表中。
您同样可以使用直接修改数据库的老办法。假设变量$wgPasswordSalt已被设为true值(默认),您可以在MySQL中运行下列SQL查询:
UPDATE USER SET user_password = MD5(CONCAT(user_id, '-',
MD5('somepass'))) WHERE user_name = 'someuser';
这里可见的“somepass”就是您将要设置的密码,而“someuser”就是您将修改其密码的用户名,该用户名应出现在数据库的“user”表中。
Note 注意:CONCAT字符串中的user_id是一项列名,不应被替换为'someuser'。
Note 注意:如果您得到了'dbname.user table does not exist'错误,请检查LocalSettings.php文件,并特别注意$wgDBprefix变量的值。如果该变量不为空,请尝试重复执行上述命令,并将SQL查询UPDATE子句中的user替换为$wgDBPrefix_user。
如果您使用的是PostGreSQL,请使用下列查询替代:
UPDATE mwuser SET user_password =
md5(user_id || '-' || md5('somepass')) WHERE user_name='someuser';
您还可以尝试使用重设密码插件。