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