Почему в новых версиях MODX не работает сброс пароля через MD5 и как восстановить доступ в manager
Есть ситуация, с которой сталкиваются почти все, кто переносит сайты на MODX или восстанавливает их из бэкапа.
Вы заходите в /manager, вводите логин и пароль — и MODX просто не пускает.
Пароль “точно правильный”. Вы его только что поменяли в базе через MD5 — как советуют старые статьи и форумы.
Но входа нет.
Спокойно. В большинстве случаев MODX не “сломался” — просто вы применили устаревший способ.
Почему так происходит
В старых версиях MODX (Evo и ранние Revo) действительно хватало простой замены:
Интернет до сих пор завален инструкциями 2010–2014 годов, где это подаётся как универсальное решение.
Проблема в том, что в современных версиях MODX авторизация — это не только поле password.
Быстрый способ (если нужно срочно войти именно под этим пользователем)
Этот способ полезен, когда нужно войти прямо сейчас и у вас есть доступ к phpMyAdmin.
Выполните запрос (пример — для пользователя admin, пароль станет qwerty):
После этого:
MD5 давно считается устаревшим для хранения паролей:
В этой статье он используется только как аварийный ключ на один вход: зайти → сменить пароль штатно → забыть.
Самый надёжный способ: создать нового администратора (рекомендуем при переносах и восстановлении)
Если задача — стабильно вернуть доступ и не гадать, “почему не пускает”, проще и безопаснее создать нового пользователя-администратора напрямую в базе.
Потом войти в админку и уже спокойно навести порядок.
Это создаст (или активирует) пользователя my_admin.
Обычно это Administrator или Administrators.
Если не сработало — проверьте эти 4 пункта
Вы заходите в /manager, вводите логин и пароль — и MODX просто не пускает.
Пароль “точно правильный”. Вы его только что поменяли в базе через MD5 — как советуют старые статьи и форумы.
Но входа нет.
Спокойно. В большинстве случаев MODX не “сломался” — просто вы применили устаревший способ.
Почему так происходит
В старых версиях MODX (Evo и ранние Revo) действительно хватало простой замены:
UPDATE modx_users
SET password = MD5('newpassword')
WHERE username = 'user';Интернет до сих пор завален инструкциями 2010–2014 годов, где это подаётся как универсальное решение.
Проблема в том, что в современных версиях MODX авторизация — это не только поле password.
Теперь учитываются:
- профиль пользователя (modx_user_attributes);
- активность (active);
- группы и роли;
- корректная связка с контекстом manager;
- логика хеширования (класс хеша, соль, кэш пароля).
В результате вы видите типичную картину:
- пароль в базе есть;
- но для MODX пользователь “некорректен” (или пароль проверяется иначе);
- /manager не принимает вход.
- Самая частая ошибка
Пытаться “починить” существующего пользователя вслепую:
- менять password;
- трогать salt;
- очищать поля наугад;
- удалять какие-то данные.
Быстрый способ (если нужно срочно войти именно под этим пользователем)
Этот способ полезен, когда нужно войти прямо сейчас и у вас есть доступ к phpMyAdmin.
Выполните запрос (пример — для пользователя admin, пароль станет qwerty):
UPDATE modx_users
SET
password = 'd8578edf8458ce06fbc5bb76a58c5ca4',
hash_class = 'hashing.modMD5',
salt = '',
cachepwd = ''
WHERE username = 'admin';После этого:
- /manager
- логин: admin
- пароль: qwerty
Почему мы вообще упоминаем MD5 — и почему он “старый”
MD5 давно считается устаревшим для хранения паролей:
- он очень быстрый → легко перебирается при утечке базы;
- не предназначен для защиты от брутфорса, в отличие от современных алгоритмов.
В этой статье он используется только как аварийный ключ на один вход: зайти → сменить пароль штатно → забыть.
Самый надёжный способ: создать нового администратора (рекомендуем при переносах и восстановлении)
Если задача — стабильно вернуть доступ и не гадать, “почему не пускает”, проще и безопаснее создать нового пользователя-администратора напрямую в базе.
Потом войти в админку и уже спокойно навести порядок.
Ниже — пошаговый вариант через phpMyAdmin.
Шаг 1. Определяем базу и префикс таблиц
Откройте файл:core/config/config.inc.php- Найдите:$dbase — имя базы данных
- $table_prefix — префикс таблиц (не всегда modx_)
⚠️ Если у вас префикс другой — замените modx_ в запросах ниже на свой.
Шаг 2. Создаём пользователя
В phpMyAdmin → вкладка SQL:INSERT INTO modx_users (username, password, active, class_key)
VALUES ('my_admin', MD5('MyStrongPass123!'), 1, 'modUser')
ON DUPLICATE KEY UPDATE
password = MD5('MyStrongPass123!'),
active = 1;Это создаст (или активирует) пользователя my_admin.
Шаг 3. Создаём профиль пользователя (обязательно)
Без записи в modx_user_attributes MODX может вести себя некорректно.INSERT INTO modx_user_attributes (internalKey, fullname, email)
SELECT u.id, 'Temp Admin', ''
FROM modx_users u
LEFT JOIN modx_user_attributes a ON a.internalKey = u.id
WHERE u.username = 'my_admin'
AND a.internalKey IS NULL;Шаг 4. Добавляем в группу администраторов
Сначала можно проверить, как называется группа:SELECT id, name FROM modx_user_groups;Обычно это Administrator или Administrators.
Добавляем пользователя:
INSERT INTO modx_member_groups (member, user_group, role)
SELECT u.id, g.id, 2
FROM modx_users u
JOIN modx_user_groups g ON g.name IN ('Administrator','Administrators')
LEFT JOIN modx_member_groups mg
ON mg.member = u.id AND mg.user_group = g.id
WHERE u.username = 'my_admin'
AND mg.member IS NULL;Шаг 5. Вход в админку
Пробуем войти:- /manager
- логин: my_admin
- пароль: MyStrongPass123!
- После входа: смените пароль на свой;
Если не сработало — проверьте эти 4 пункта
- Префикс таблиц корректный
- Пользователь активен (active = 1)
- Есть запись в modx_user_attributes
- Пользователь добавлен в группу Administrator / Administrators
Дополнительно (по ситуации):
- очистите кеш MODX (core/cache/*)
Итог:
- Простая замена password = MD5(...) — больше не “универсальное решение” для современных MODX.
- Старые инструкции часто вводят в заблуждение.
- Для срочного входа есть быстрый аварийный вариант (MD5 + правильные поля).
- Самый стабильный путь при переносах и восстановлении — корректно создать нового администратора в базе.
- Этот подход регулярно выручает при переносах, восстановлении сайтов и работе с бэкапами.
Комментарии: 2
Интернет до сих пор завален инструкциями 2010–2014 годов,вы что в спутнике ищите
все работает нормально и не надо усложнять
В таблице *_users у пользователя значение в поле hash_class ставим hashing.modMD5, поля salt и cachepwd очищаем, а в поле password меняем значение на: d8578edf8458ce06fbc5bb76a58c5ca4
входим под поролем qwerty
протестил даже для интереса на тройке
- профиль пользователя,
- группы и роли,
- контекст manager.
Ваш вариант с hash_class = hashing.modMD5 действительно рабочий — и именно поэтому он прямо описан в статье как быстрый аварийный способ.
Но статья не про “как один раз зайти”, а про стабильное восстановление доступа при переносах и бэкапах.
В реальности проблема часто не только в пароле, а в связке:
Быстро зайти — да, ваш вариант.
Гарантированно восстановить доступ — другой сценарий.
Но статья не про “как один раз зайти”, а про стабильное восстановление доступа при переносах и бэкапах.
В реальности проблема часто не только в пароле, а в связке:
Быстро зайти — да, ваш вариант.
Гарантированно восстановить доступ — другой сценарий.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.