В новых версиях ModX пароль хранится и проверяется не так, как в старых инструкциях. Простая замена password = MD5('...') часто не даёт войти в админку, потому что системе важны ещё профиль пользователя, права и корректная связка с группой администраторов.
Пароль ModX: почему MD5 не работает и как восстановить доступ в админку
Содержание:
Потерять доступ в админку MODX можно в самый неподходящий момент: после переноса сайта, восстановления из бэкапа, смены хостинга или просто из-за старого пароля, который уже никто не помнит. И именно в этот момент начинается самое неприятное: старые статьи советуют просто записать MD5-хэш в базу, но на практике этого часто недостаточно.
Ниже разберём, как восстановить доступ в админку MODX без паники: когда можно быстро вернуть вход существующему пользователю, а когда надёжнее создать нового администратора через phpMyAdmin.
Почему простая замена пароля через MD5 не всегда помогает
Старые инструкции обычно предлагают обновить поле password в таблице пользователей и на этом
остановиться. Иногда такой способ действительно срабатывает, но далеко не всегда.
Проблема в том, что MODX смотрит не только на сам хэш пароля. На вход в /manager влияют и другие
параметры:
-
активность пользователя;
-
профиль в
modx_user_attributes; -
членство в группе администраторов;
-
параметры хэширования, включая
hash_class,saltиcachepwd; -
кеш и служебные данные после переноса сайта.
Именно поэтому пароль может казаться «правильным» в базе, но вход в админку всё равно не проходит.
С чего начать перед восстановлением доступа
Перед тем как выполнять SQL-запросы, откройте файл core/config/config.inc.php и проверьте две вещи:
-
имя базы данных;
-
префикс таблиц.
В примерах ниже используется префикс modx_. Если у вас другой префикс, замените его во всех запросах.
Также желательно сделать резервную копию базы. Обычно операции здесь простые, но привычка делать бэкап до правок никогда не бывает лишней.
Быстрый способ: вернуть вход существующему администратору
Если пользователь существует и вам нужно просто срочно попасть в админку, сначала можно попробовать обновить пароль для существующей учётной записи и одновременно привести параметры хэширования к понятному виду.
UPDATE modx_users
SET
password = 'd8578edf8458ce06fbc5bb76a58c5ca4',
hash_class = 'hashing.modMD5',
salt = '',
cachepwd = ''
WHERE username = 'admin';
После этого попробуйте войти в /manager с логином admin и временным паролем
qwerty.
Важно: если вход сработал, сразу после авторизации задайте новый сложный пароль через интерфейс MODX.
Когда быстрый способ лучше не использовать как основной
Этот вариант подходит именно как аварийный. Он не решает все проблемы, если:
-
пользователь повреждён после переноса;
-
аккаунт неактивен;
-
у пользователя нет корректной записи в
modx_user_attributes; -
учётная запись выпала из группы администраторов;
-
на сайте несколько админов, и вы не уверены, какой именно логин нужно восстанавливать.
В этих случаях лучше не бороться со старым пользователем вслепую, а создать нового администратора корректно.
Надёжный способ: создать нового администратора через phpMyAdmin
Это самый спокойный сценарий для переносов, восстановления из резервной копии и любых случаев, когда старый аккаунт вызывает сомнения.
Шаг 1. Создаём пользователя
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;
Шаг 2. Создаём профиль пользователя
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;
Шаг 3. Проверяем группу администраторов
SELECT id, name
FROM modx_user_groups;
Посмотрите, как именно называется группа на вашем сайте: Administrator, Administrators или
иначе.
Шаг 4. Добавляем пользователя в группу администраторов
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;
После этого пробуйте вход:
-
URL:
https://ваш-домен/manager; -
логин:
my_admin; -
пароль:
MyStrongPass123!.
Если вход прошёл, дальше спокойно меняйте пароль на свой и решайте, нужен ли временный пользователь в системе.
Что проверить, если MODX всё ещё не пускает
Если новый пользователь создан, а входа всё равно нет, обычно причина находится в одном из этих пунктов:
-
Неверный префикс таблиц.
Запросы выполнялись не в тех таблицах, потому что на проекте используется неmodx_, а другой префикс. -
Неправильная группа администраторов.
На сайте она может называться иначе, поэтому пользователя просто не добавили в нужную группу. -
Кеш MODX.
После восстановления сайта или ручных правок иногда полезно очиститьcore/cache/*. -
Пользователь неактивен.
Проверьте, что в таблице пользователейactive = 1. -
Нет профиля пользователя.
Без записи вmodx_user_attributesвход может не отработать как ожидается.
Чек-лист перед тем, как считать задачу решённой
-
есть рабочий вход в
/manager; -
восстановленный или новый пользователь активен;
-
пользователь состоит в группе администраторов;
-
временный пароль заменён на сложный;
-
лишние временные учётные записи удалены или отключены;
-
кеш MODX очищен после правок.
Когда лучше не править базу самостоятельно
Если сайт уже перенесён неудачно, в базе есть следы старых правок, а доступов несколько и непонятно, какой аккаунт является основным, лучше не множить хаос. В таких случаях проще один раз аккуратно восстановить админку и параллельно проверить, всё ли в порядке с пользователями, группами, ролями и настройками безопасности.
Если задача срочная и не хочется рисковать боевым сайтом, можно обратиться за анализом кода или написать через контакты.
Итог
Если коротко: простая запись MD5-хэша в таблицу пользователей — это не универсальное решение. Для MODX куда надёжнее смотреть на учётную запись целиком: активность, профиль, группу и параметры авторизации.
Для быстрого входа можно временно обновить пароль существующему пользователю. Но если сайт пережил перенос, восстановление из бэкапа или старый аккаунт выглядит подозрительно, надёжнее создать нового администратора через phpMyAdmin и уже потом спокойно навести порядок в системе.
Нужна помощь с восстановлением доступа в MODX?
Поможем вернуть вход в админку и проверить, чтобы проблема не повторилась после переноса или восстановления сайта.
Связаться с намиВопрос? Ответ
Самый надёжный способ — создать нового пользователя-администратора через phpMyAdmin и добавить его в группу Administrator. Так вы гарантированно получите вход в /manager, даже если старый пользователь сломан или настройки авторизации отличаются
В файле core/config/config.inc.php. Там указаны имя базы ($dbase) и префикс таблиц ($table_prefix).
Префикс — это начало названий таблиц (например, modx_, site_, abc_). Если у вашего сайта префикс отличается, нужно заменить modx_ в запросах на свой, иначе SQL будет выполняться “не в те таблицы”.
Это таблица профиля пользователя (атрибутов). В ней хранится связка с пользователем по internalKey. Если записи нет, MODX может работать нестабильно: не пускать в админку или некорректно применять права. Поэтому при создании нового админа мы обязательно создаём и атрибуты.
Проверьте три вещи: (1) правильный префикс таблиц, (2) что пользователь добавлен в группу Administrator, (3) очистите кеш MODX (core/cache/*) и попробуйте снова.
Иногда — да, но это менее надёжно, чем создать нового администратора. При переносах/бэкапах у старого пользователя могут быть проблемы с правами или профилем, и тогда “простая замена пароля” не поможет.
Да, если вы делаете точечные изменения и понимаете, в какой базе работает сайт. Перед правками лучше сделать резервную копию базы (Export в phpMyAdmin), а SQL выполнять строго как в инструкции.