Почему в новых версиях MODX не работает сброс пароля через MD5 и как восстановить доступ в manager

Есть ситуация, с которой сталкиваются почти все, кто переносит или восстанавливает сайты на MODX.

Вы заходите в /manager, вводите логин и пароль — и MODX просто не пускает.
Пароль «точно правильный».
Его только что поменяли в базе через MD5 — как советуют старые статьи и форумы.

Но входа нет.

Почему так происходит
В старых версиях MODX (Evo и ранние Revo) действительно хватало простой замены пароля:

UPDATE modx_users SET password = MD5('newpassword') WHERE username = 'user';
Интернет до сих пор завален инструкциями 2010–2014 годов, где этот способ описан как рабочий.

Проблема в том, что в новых версиях MODX схема авторизации изменилась.

Теперь учитываются:

профиль пользователя (modx_user_attributes)

активность пользователя

группы и роли

корректная связка с контекстом manager

более сложная логика проверки пароля

В результате:

пароль в базе есть,
но для MODX пользователь считается некорректным.

Самая частая ошибка
Пытаться «починить» существующего пользователя:

менять пароль

трогать соль

удалять данные вслепую

Это редко даёт стабильный результат.

Самый надёжный способ: создать нового администратора
Проще и безопаснее создать нового пользователя-администратора напрямую в базе, а потом уже войти в админку и навести порядок.

Ниже — пошаговый вариант через 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!

После входа:

поменяйте пароль на свой

при необходимости удалите временного пользователя

Если не сработало — проверьте
Префикс таблиц

Пользователь активен (active = 1)

Есть запись в modx_user_attributes

Пользователь в группе Administrator

Кеш MODX очищен (core/cache/*)

В большинстве случаев проблема именно здесь.

В итоге
MD5 в MODX больше не является «универсальным решением»

старые инструкции вводят в заблуждение

самый стабильный путь — корректно создать администратора в базе

Этот подход регулярно выручает при переносах, восстановлении сайтов и работе с бэкапами.
Юрий
Вчера в 23:45
modx.pro
31
+2

Комментарии: 1

ВитОс
7 часов назад
0
Интернет до сих пор завален инструкциями 2010–2014 годов,
вы что в спутнике ищите
все работает нормально и не надо усложнять
В таблице *_users у пользователя значение в поле hash_class ставим hashing.modMD5, поля salt и cachepwd очищаем, а в поле password меняем значение на: d8578edf8458ce06fbc5bb76a58c5ca4
входим под поролем qwerty
протестил даже для интереса на тройке
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1