В новых версиях ModX пароль хранится и проверяется не так, как в старых инструкциях. Простая замена password = MD5('...') часто не даёт войти в админку, потому что системе важны ещё профиль пользователя, права и корректная связка с группой администраторов.
Пароль ModX: почему MD5 не работает и как восстановить доступ в админку
Содержание:
Есть один момент, который знаком почти каждому, кто работает с ModX.
Он всегда случается не вовремя.
Вы заходите в /manager, вводите логин и пароль — и…
ModX молча говорит «нет».
Пароль точно правильный.
Вы даже поменяли его в базе через MD5, как советуют старые статьи.
Но входа всё равно нет.
Если вы сейчас в этой точке — остановитесь.
Вы ничего не сломали. Просто в MODX есть нюансы, которые старые инструкции не учитывают.
Сразу по делу: два варианта восстановления
В этой статье два рабочих пути:
Быстро — сменить пароль существующему пользователю (чтобы срочно войти).
Надёжно — создать нового администратора в базе (лучше при переносах/восстановлении).
Оба варианта делаются через phpMyAdmin. Никаких файлов MODX трогать не нужно.
Сверхбыстрый способ: войти без смены пароля в базе (через временный скрипт)
Если у тебя есть доступ по FTP (или через панель хостинга к файлам) и ты не хочешь трогать базу вообще — можно создать одноразовый PHP-файл, который мгновенно авторизует тебя как администратора и сразу перенаправит в /manager/. Это работает на большинстве сайтов MODX Revolution 2.1–3.x.
Метод взят из проверенной заметки Ильи (ilyaut.ru) — один из самых чистых и быстрых способов без изменения хэшей.
Шаги:
- В корневой папке сайта (там же, где index.php, core/, manager/, connectors/) создай новый файл, например
auth.php(или любое имя, которое не угадать, типа temp-login-2026.php). - Вставь в него этот код:
<?php
// Одноразовый скрипт для входа в админку MODX без пароля
define('MODX_API_MODE', true);
require 'index.php'; // подключаем ядро MODX
// Ищем первого пользователя из группы Administrator (ID = 1)
$member = $modx->getObject('modUserGroupMember', array('user_group' => 1));
if ($member) {
$user = $modx->getObject('modUser', $member->get('member'));
if ($user) {
$user->addSessionContext('mgr'); // добавляем сессию в контексте manager
unlink(__FILE__); // удаляем файл сам себя (для безопасности)
$modx->sendRedirect('/manager/'); // перенаправляем в админку
}
}
// Если не нашли — выводим ошибку
echo 'Ошибка: не найден пользователь в группе с ID=1 (Administrator). Проверьте ID группы в таблице modx_user_groups.';
?>
- Сохрани файл и открой в браузере:
https://твой-сайт.ru/auth.php
Что произойдёт:
- Скрипт загрузит MODX.
- Найдёт пользователя из группы №1 (обычно Administrator).
- Принудительно создаст сессию в админке.
- Сам удалится.
- Ты окажешься внутри /manager/ без ввода логина/пароля.
Важные предупреждения и проверки
- Группа должна быть с ID=1. Проверь в phpMyAdmin:
SELECT id, name FROM modx_user_groups WHERE name LIKE '%Admin%';. Если ID другой (например 3) — замени1в коде на правильный. - После входа немедленно зайди в Система → Пользователи → свой аккаунт → вкладка «Настройки аккаунта» и смени пароль на сложный.
- Если файл не удалился автоматически — удали его вручную по FTP!
- Этот способ требует доступа к файлам. Если доступа к файлам нет — используй SQL-методы выше.
- Безопасность: если кто-то смог загрузить файл на сервер — сайт уже под угрозой. Этот скрипт — только для восстановления после твоей собственной ошибки.
Плюсы: не меняет ничего в базе, вход мгновенный, никаких хэшей/salt/cachepwd.
Минусы: нужен FTP, зависит от ID группы.
Если вам нужно прямо сейчас зайти в админку (а пользователь существует) — это самый быстрый способ.
Быстрый способ: поменять пароль текущему администратору
Шаг 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 выполнять строго как в инструкции.