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

Пароль MODX: почему MD5 не работает и как восстановить доступ в админку

Содержание:

 

Есть один момент, который знаком почти каждому, кто работает с MODX.
Он всегда происходит неожиданно.

Вы заходите в /manager, вводите логин и пароль — и…
MODX молча говорит «нет».

Пароль точно правильный.
Вы его только что поменяли в базе.
Через MD5, как написано в десятках статей и на форумах.

Но админка не пускает.

Если вы сейчас в этой точке — остановитесь.
Вы ничего не сломали. И вы не один.


Классический сценарий (и почему он больше не работает)

Обычно всё начинается одинаково:

  • сайт перенесли на новый сервер

  • восстановили из бэкапа

  • пароль администратора не подходит

Вы идёте в поиск и находите «проверенный» совет:

UPDATE modx_users
SET password = MD5('newpassword')
WHERE username = 'user';

Обновляете пароль.
Пробуете войти.

Не пускает.

И вот здесь начинается самое интересное.


Как было раньше (MODX Evo и старые Revo)

В старых версиях MODX всё действительно было просто:

  • пароль = MD5

  • никакой соли

  • минимум проверок

Меняли хэш в базе — и входили в админку.

Поэтому интернет до сих пор завален статьями 2010–2014 годов, где это описано как рабочий способ.

Проблема в том, что MODX давно изменился.


Что изменилось в новых версиях MODX

Начиная с более свежих версий MODX Revolution, система авторизации стала сложнее и безопаснее.

Теперь используется:

  • соль (salt)

  • более сложная схема хэширования

  • дополнительные проверки пользователя

  • связь с контекстом manager

  • группы и роли доступа

И самое главное:

Просто записать MD5 в поле password — недостаточно.

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

Отсюда и ощущение, что «пароль есть, а входа нет».


Почему MD5 больше не спасает

MD5 сам по себе:

  • устарел

  • небезопасен

  • и в MODX используется не напрямую

MODX ожидает:

  • конкретный формат хэша

  • корректную связку пользователя

  • активный статус

  • наличие профиля

  • права администратора

Если хотя бы один элемент не совпадает — вход будет заблокирован.

Именно поэтому:

  • старые SQL-запросы «не работают»

  • удаление соли ломает авторизацию ещё сильнее

  • люди по кругу меняют пароль, но результат один


Самая частая ошибка (и самая опасная)

Пытаться чинить существующего пользователя вслепую

Что обычно делают:

  • правят пароль

  • не проверяют группы

  • не смотрят, активен ли пользователь

  • не проверяют контекст manager

В итоге:

  • пользователь есть

  • пароль есть

  • а прав на вход нет


Правильный подход: не чинить, а создать доступ

Когда мы сталкиваемся с такими ситуациями на проданных или восстановленных сайтах, мы не пытаемся угадать, как именно был сформирован старый пароль.

Мы делаем проще и надёжнее.

 

Как восстановить доступ в админку MODX через phpMyAdmin (самый понятный способ)

Сразу договоримся: мы не будем “ковырять соль” и угадывать, как был сделан старый пароль. Мы сделаем проще и надёжнее: создадим нового администратора в базе данных, чтобы точно войти в /manager.

Что нужно заранее

  • доступ в хостинг/панель или к базе данных

  • phpMyAdmin (обычно есть в панели)

  • имя базы данных (DB name) — его можно посмотреть в файле core/config/config.inc.php


Шаг 1. Открываем phpMyAdmin и выбираем базу

  1. Зайди в phpMyAdmin.

  2. Слева выбери нужную базу данных (ту, где лежит MODX).

Если не уверен, какая база — открой файл:
core/config/config.inc.php
и найди строки:

  • $dbase = '...';

  • $table_prefix = '...';


Шаг 2. Узнаём префикс таблиц (важно)

У MODX таблицы часто начинаются не с modx_, а, например, с abc_.

Префикс — это значение $table_prefix.

Примеры:

  • modx_

  • site_

  • x7a_

Важно: дальше в запросах я буду писать modx_.
Если у тебя префикс другой — замени везде modx_ на свой.


Шаг 3. Создаём пользователя (в таблице users)

  1. В phpMyAdmin открой вкладку SQL.

  2. Вставь запрос ниже (замени логин и пароль на свои).

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

  • ставит пароль

  • делает его активным


Шаг 4. Создаём “атрибуты” пользователя (это важно!)

У MODX есть вторая таблица, где хранится профиль пользователя: имя, email и т.д.
Иногда без неё MODX ведёт себя странно, поэтому мы создаём её обязательно.

В phpMyAdmin снова вкладка SQL и выполняем:

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;

✅ Что это делает:

  • находит ID пользователя my_admin

  • создаёт запись в modx_user_attributes, если её ещё нет


Шаг 5. Добавляем пользователя в группу администраторов

Даже если пользователь создан, без прав администратора он может не попасть в manager или будет без доступа.

Сначала убедимся, что группа существует. Выполни:

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;

✅ Что это делает:

  • берёт пользователя my_admin

  • берёт группу Administrator(ы)

  • связывает их через modx_member_groups


Шаг 6. Заходим в админку

Теперь пробуй вход:

  • URL: https://твой-сайт.by/manager

  • Логин: my_admin

  • Пароль: MyStrongPass123!

Если зашёл — супер. Сразу сделай:

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

  • удали временного пользователя (если не нужен)


Если не сработало: 3 быстрых проверки

  1. Неправильный префикс таблиц
    Если таблицы у тебя abc_users, а ты выполнил modx_users — запросы ушли “в никуда”.

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

    SELECT id, name FROM modx_user_groups;
  3. MODX кеширует права
    После входа/изменений можно очистить кеш:

    • через панель (если вошёл)

    • удалить папку core/cache/* (если есть доступ по FTP/SSH)

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

Перед тем как паниковать, проверьте:

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

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

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

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

  • ✅ используется контекст manager

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


Почему мы решили написать эту статью

Потому что за последний год мы десятки раз видели одно и то же:

«Мы всё сделали по инструкции из интернета — но не работает».

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 выполнять строго как в инструкции.

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

Связь с нами