Восстанавливаем пароль к WordPress’у
В системе управления паролями WordPress’а есть стандартный метод восстановления доступа к сайту (панели управления сайтом), посредством получения новой пароли взамен потерянной.

Достаточно в панели «забыли пароль?» ввести свой email или ник, и вам будет выслан новый пароль на email.

Однако бывает ситуации, когда невозможно воспользоваться email (нет доступа к email).
Особенно часто данная ситуация возникает (на локальном сервере \localhost) при неправильной установки «денвера».
Примечание:
При правильной установки «Денвера», по следующему пути ‘Х:\WebServers\tmp\!sendmail’ должна быть установлена заглушка «!sendmail». Куда складываются вся почта, отсылаемая скриптами с localhost. Письма хранятся в файлах вида «дата_и_время.eml» (пример: 2008-05-28_19-20-22.eml), которые можно открыт в любом текстовом редакторе типа «Блокнот».
Как раз недавно и со мной случилось такая беда, один из бесплатных email серверов канул в небытие. И как раз один из сайтов быль зарегистрирован на email этого сервера. Сайт давно лежал без присмотра, и хотел я его восстановить и с удивлением заметил что потерял пароль к админ части (хотя я записываю все пароли и ники в отдельный блокнотик, но к этому сайту записи не оказалось).
Было несколько вариантов решения данной проблемы:
1. Сохранит базу, пре установит WordPress, и вручную восстановить каждую запись базы (долго и нудно).
2. Залезть в скрипт управление паролями в WordPress и поставить заглушку на проверку пароли (?)(не пробовал хотя в сети нашел инфу для других смс как это сделать).
3. Подмена пароли, подменит код MD5 в базе на код известной нам пароли.
Вот о 3-м способе я вам и поведаю.
Посмотрим, как работает проверка пароли при входе:

Скрипт проверки пароли берет данные (имя и пароль) введенные вами в форму, объединяет их и email «login+password+email» (объединение с email’ом не проверял, может email не участвует) и кодирует в строку MD5. После чего полученная строка проверяется со строкой хранящейся в базе данных.
Примечание:
WordPress не хранит в базе данных пароль пользователя. А хранит строку кода созданную при регистрации из данных пользователя (login+password+email).
Как известно хреш код MD5 всегда кодируется в одну и туже строку (то есть из одних данных всегда при кодировании получаем одинаковый код). А зная это нам нужно подобрать последовательность данных и получит код MD5 для замены.
Немного поэкспериментировав на localhost, я получил данные которые можно с успехом применит для подмены пароли в базе WordPress’а.
Данные для подменны:
Имя пользователя: admin ;
e-mail: a@mail.ru ;
проль: 123 ;
код: $P$BM1gkak60RFD.yxeTIRyaRw4DEuvyv0 ;
Как пользоваться.
Открываем «phpMyAdmin», выбираем нашу базу, выбираем обзор «wp_users» (смотри рисунок), далее в следующей странице выбираем редактировать.


Подменяем данные в базе (смотри рисунок) и сохраняем.
Идем на страницу входа в админку, вбиваем наши данные (логин: admin, проль: 123), входим в админку и меняем данные (login, password, email) на свои.
Все!
PS.
Это было мое небольшое изыскание в области восстановление пароли. Еще, после того как я решил проблемы с восстановлению пароли в WordPress, мне на глаза попалась статья в кодексе «Secret Key IMPORTANT» где обсуждается уязвимость WordPress.
Также о «секретного ключа» можно прочитать у «Тараса», провиденный мною небольшое изыскание показало, что данный ключ влияет на генерацию кода. Но при подмене, если даже прописанные разные секретные ключи в wp-config.php вы все равно входите в админку. Что доказывает, что данный ключ не учитывается при проверке входа в админку (не понятно ???)
Дополнение:
Предложенный вариант «Dissected_voice», по подмены (замены) пароли в WordPress’e.
Проверил на Wp 2.5 работает (непонятно).
Входим в phpMyAdmin, выбираем нашу базу, выбираем таблицу «wp_users» и переходим на страницу редактирования (рисунок ниже). В вписываем новый пароль в поле «user_pass» и выбераем функцию преобразования MD5. Сохраняем, кнопочка «Пошел», все пользуемся новой паролю.
06.06.2008 в 11:57
Полезный пост. Реально полезный. Как-то пытался сделать такую подмену, но не вышло и забил. Из-за одного сплога заморачиваться лень было. А сейчас сплогов несколько десятков и пароли к ним пришлось как-то искать долго-долго…
06.06.2008 в 14:00
Было аналогичная ситуация, поиски решения этой проблемы и найденное решения влились в этот пост.
09.07.2008 в 03:50
Достаточно трудоемко.
Недавно сам восстанавливал пароль - проще через phpMyAdmin зайти в таблицу wp_users и в поле user_pass вписать новый пароль, а кроме того слева поставить функцию MD5.
Принимаем изменения и … вуаля, пароль сменился. И не нужно никаких манипуляций с МД5 хэшем.
12.07.2008 в 19:57
Dissected_voice, то есть это просто md5 от пароля?
надо проверить =)
-не в тему-
а как, кстати, заставить Wordpress при авторизации смотреть не в свою базу, а в таблицу из другой базы, где лежат юзеры CMS Bitrix? будет очень полезно иметь такую возможность, потому что синхронизация - дело последнее..
13.07.2008 в 06:16
Спасибо Dissected_voice, проверил работает (добавил в пост), только не понятно почему, вроде в официальной документации говорится о использовании нескольких источников данных при кодировании в MD5.
sho0reek – Для синхронизации с другой базой скорее всего нужно будет писать свой скрипт.
Или вы имеете ввиду мульти-блог (в одной базе несколько блогов), то решение данной задачи в определении префикса для каждого блога по его домену.
13.07.2008 в 08:10
WpTj, про мультиблог понятно. А вот если нужно обращаться к таблице пользователей на другом сервере, CMS тоже другая, т.е. данные лежат по-другому
Что лучше - делать периодически импорт пользователей своим скриптом (плохо) или сделать плагин? Ведь теоретически можно сделать такой плагин?
13.07.2008 в 09:03
sho0reek – Лучшим вариантом будет плагин, но можно небольшой скрипт (функцию) добавит functions.php, и все будет отлично работать, еще для ускорения и уменьшения количество внешних обращений можно кэшировать данные во временную таблицу. Или можно создать таблицу в базе данных блога и обновлять ее (там каждый час или раз в сутки), в зависимости что Вам нужно конкретно.
30.11.2008 в 10:21
Вот спасибо
Помогло)
18.11.2009 в 16:50
Большое спасибо за статью. По глупости пришлось переносить базу на уже чистый домен, после импорта выносило с админки и не принимало пароль данный при установке WP. Ваш способ помог за 5 мин управился, до этого часов пять проигрался
16.04.2010 в 23:54
Да, спасибо автору. Реально хватило просто заменить эл.адрес в PhPMyAdmin и получить на него новый пароль.