Главная / Блог ModX / Пароль ModX: как восстановить доступ в админку

Пароль 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 быстрых проверки

  1. Префикс таблиц
    Если таблицы у вас abc_users, а вы выполняли запросы в modx_users, изменения не попадут в нужные таблицы.

  2. Название группы администраторов
    Выполните:

    SELECT id, name FROM modx_user_groups;
  3. Кеш MODX
    Если есть доступ к файлам — удалите core/cache/* или очистите кеш из админки (когда войдёте).

Чек-лист, если MODX всё ещё не пускает

  • ✅ правильный префикс таблиц

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

  • ✅ есть запись в modx_user_attributes

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


В заключение

Если коротко:

  • простой password = MD5(...) — часто не помогает, потому что MODX проверяет больше, чем одно поле

  • для срочного входа есть быстрый вариант (MD5 + правильные поля)

  • самый надёжный путь при переносах — корректно создать нового администратора

Если вы не хотите лезть в базу данных, боитесь что-то сломать или просто хотите сэкономить время — мы регулярно помогаем с такими ситуациями при переносе и восстановлении сайтов на MODX.

Главное — теперь вы понимаете, почему проблема возникла.
А значит — вы уже на шаг ближе к её решению 😉

Вопрос? Ответ

В новых версиях ModX пароль хранится и проверяется не так, как в старых инструкциях. Простая замена password = MD5('...') часто не даёт войти в админку, потому что системе важны ещё профиль пользователя, права и корректная связка с группой администраторов.

Самый надёжный способ — создать нового пользователя-администратора через 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 выполнять строго как в инструкции.

Как бы Вы хотели связаться?

Связь с нами