Открытое и свободное

Блог о Linux, Open Source и больших корпорациях

Смена пароля в MediaWiki

March 20th, 2008 · No Comments
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Может случиться, что вы забыли пароль к свой записи к вики. Если при регистрации было заполнено поле e-mail, и система проверила его корректность (прислала письмо подтверждения) - тогда все хорошо, пароль может прийти к вам на этот e-mail. Если это не получается, то придется попросить администратора сменить пароль для вас.

А теперь представьте, что вы администратор сервера, на котором установлена вики и вам нужно сменить пароль пользователя. Уже сложнее, не так ли? :) Как это делается:
1. Создать новую директорию на сервере с вики:

wiki-install-folder/extensions/PasswordReset

2. Скачать 4 файла, добавляющие поддержку сброса паролей:

3. Скопировать их в созданную директорию
4. Добавить в конец файла LocalSettings.php следующий код:

$wgGroupPermissions['sysop']['passwordreset'] = true;
require_once( “$IP/extensions/PasswordReset/PasswordReset.php” );

5. Теперь в специальных страницах у администраторов появляются еще две - Password Reset и Disabled users

Еще более интересный вариант - вы администратор, но забыли пароль администратора, и на e-mail он к вам не приходит. Придется действовать напрямую с помощью запросов к базе данных.
1. Открываем файл LocalSettings.php и ищем строчки
$wgDBtype - тип базы данных
$wgDBserver - имя сервера
$wgDBname - имя базы данных
$wgDBuser - имя пользователя базы данных
$wgDBpassword - пароль
$wgDBprefix - префикс имен таблиц
1. Открываем PhpMyAdmin (или что-то, с помощью чего вы можете вносить изменения в базу) и заходим, используя найденные имя и пароль.
2. Находим нужную базу (с именем $wgDBname) и выводим на экран содержимое таблицы $wgDBprefixuser (если префикс не используется, то просто user). Ищем требуемого пользователя в списке и выясняем его id.
3. Выполняем SQL-запрос:
если база типа MySQL, то

UPDATE user SET user_password = MD5(CONCAT(user_id, ‘-’,
MD5(’somepass’))) WHERE user_name = ’someuser’;

если база типа PostGreSQL, то

UPDATE mwuser SET user_password =
md5(user_id || ‘-’ || md5(’somepass’)) WHERE user_name=’someuser’;

Где:
user - имя таблицы. Если префикс имени используется, то вместо user имя будет $wgDBprefixuser
someuser - имя пользователя (регистр имеет значение)
user_id - id пользователя (его выяснили на предыдущем пункте)
somepass - новый пароль

Вот в общем-то и все.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Digg
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • e-mail
  • Slashdot
  • Technorati
  • YahooMyWeb
  • Furl
  • MyShare
  • Socialogs

Tags: Internet

0 responses so far ↓

  • There are no comments yet...Kick things off by filling out the form below.

Leave a Comment