Назад к блогу

Как восстановить доступ администратора Confluence через базу данных — экстренное руководство

2025-04-245 мин чтения

Рассмотрим такой сценарий: утро понедельника, и команде нужно добавить нового участника в критически важное пространство Confluence. Проблема? Единственный администратор только что ушел в двухнедельный отпуск, полностью отключившись от сети. У любого, кто окажется в такой ситуации, может начаться паника... пока он не вспомнит, что у него есть доступ к серверу, на котором работает Confluence. Этот гипотетический сценарий иллюстрирует, когда может потребоваться следующее техническое решение.

Важное примечание: Эта статья предоставляется исключительно в образовательных целях. Методы, описанные здесь, следует использовать только в легитимных экстренных ситуациях, когда у вас есть соответствующее разрешение на доступ к базе данных и изменение административных прав. Несанкционированный доступ или изменение базы данных может нарушать:

  • Политики безопасности вашей организации и условия трудоустройства
  • Лицензионные соглашения с Atlassian
  • Применимые законы о доступе к компьютерам в вашей юрисдикции

Всегда консультируйтесь с вашим ИТ-отделом, юридической командой и ознакомьтесь с политиками вашей организации, прежде чем пытаться вносить какие-либо прямые изменения в базу данных. Автор и этот веб-сайт не несут ответственности за любое неправомерное использование этой информации или ее последствия.

Что вам понадобится сначала

Прежде чем начать, убедитесь, что у вас есть:

  • Доступ к серверу, на котором работает база данных Confluence.
  • Имя пользователя и пароль для подключения к базе данных Confluence. (Подсказка: проверьте файл confluence.cfg.xml!)
  • Имя пользователя Confluence, которому вы хотите предоставить права администратора.

Шаг 1: Найдите сведения о вашей базе данных Confluence

Confluence хранит информацию о подключении к базе данных в файле под названием confluence.cfg.xml. Этот файл обычно находится в домашнем каталоге Confluence на вашем сервере (часто что-то вроде /var/atlassian/application-data/confluence).

Найдите файл:

Если вы знаете путь к домашнему каталогу Confluence, вы можете использовать команду вроде этой (замените /path/to/confluence/home на фактический путь):

find /path/to/confluence/home -name \"confluence.cfg.xml\"

Если вы не уверены, где находится домашний каталог Confluence, попробуйте выполнить поиск из корневого каталога (это может занять некоторое время) или перейдите в предполагаемый родительский каталог (например, /var/atlassian или /opt) и выполните поиск оттуда:

# Сначала перейдите в предполагаемый родительский каталог, затем выполните:
find . -name \"confluence.cfg.xml\"

Эта команда ищет файл в текущем каталоге (.) и всех его подкаталогах.

Прочитайте файл:

Найдя файл, откройте confluence.cfg.xml. Найдите строки, подобные этим:

<property name=\"hibernate.connection.url\">jdbc:postgresql://your-db-host:5432/confluence</property>
<property name=\"hibernate.connection.username\">confluenceuser</property>
<property name=\"hibernate.connection.password\">yourpassword</property>

Эти строки сообщают вам тип базы данных (например, PostgreSQL или MySQL), адрес сервера (your-db-host), имя базы данных, имя пользователя и пароль, которые вам нужны для подключения.

Шаг 2: Подключитесь к базе данных

Теперь используйте найденные сведения для входа в базу данных.

Если это PostgreSQL:

psql -h your-db-host -U confluenceuser -d confluence

Если это MySQL:

mysql -h your-db-host -u confluenceuser -p confluence

Введите пароль, когда будет предложено.

Шаг 3: Получите идентификатор пользователя и идентификатор группы администраторов

Вам понадобятся две части информации из базы данных: идентификатор пользователя и идентификатор группы администраторов.

Найдите идентификатор пользователя (user_key):

Выполните эту SQL-команду. Замените 'your-username' на фактическое имя пользователя Confluence, которому вы хотите предоставить права администратора:

SELECT user_key FROM cwd_user WHERE user_name = 'your-username';

Запишите user_key, которую он выдаст (это будет число).

Найдите идентификатор группы администраторов:

Выполните эту SQL-команду:

SELECT id FROM cwd_group WHERE group_name = 'confluence-administrators';

Запишите id, которую он выдаст (это идентификатор группы администраторов).

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

Это решающий шаг, на котором вы связываете пользователя с группой администраторов.

Найдите следующий доступный идентификатор для связи:

Выполните это, чтобы увидеть самый высокий текущий идентификатор в таблице членства:

SELECT MAX(id) FROM cwd_membership;

Возьмите число, которое он выдаст, и добавьте 1. Например, если он показывает 1000, вы будете использовать 1001. Это будет уникальный идентификатор для новой связи.

Создайте связь:

Выполните следующую команду `INSERT`. **Аккуратно замените** `NEXT_MEMBERSHIP_ID` на идентификатор, который вы только что рассчитали (например, `1001`), `ADMIN_GROUP_ID` на идентификатор группы администраторов, который вы нашли, и `USER_KEY` на идентификатор пользователя, который вы нашли. Также замените `'your-username'` на фактическое имя пользователя еще раз.

INSERT INTO cwd_membership (id, parent_id, child_user_id, membership_type, group_type, parent_name, lower_parent_name, child_name, lower_child_name) 
VALUES (NEXT_MEMBERSHIP_ID, ADMIN_GROUP_ID, USER_KEY, 'GROUP_USER', 'GROUP', 'confluence-administrators', 'confluence-administrators', 'your-username', 'your-username');

Пример:

-- Убедитесь, что вы используете фактические найденные идентификаторы!
INSERT INTO cwd_membership (id, parent_id, child_user_id, membership_type, group_type, parent_name, lower_parent_name, child_name, lower_child_name) 
VALUES (1001, 4587522, 241106945, 'GROUP_USER', 'GROUP', 'confluence-administrators', 'confluence-administrators', 'jane.doe', 'jane.doe');

(Примечание: если вы получите ошибку об отсутствующих столбцах, ваша версия Confluence может отличаться. Возможно, вам понадобятся только `id`, `parent_id` и `child_user_id` в операторе `INSERT`. При необходимости проверьте структуру вашей таблицы.)

Шаг 5: Перезапустите Confluence

Изменение не вступит в силу до перезапуска Confluence.

Вариант 1: Использование systemd (распространено в Linux)

sudo systemctl restart confluence

Вариант 2: Использование скриптов Confluence

cd /path/to/confluence/bin  # Перейдите в каталог bin Confluence
./shutdown.sh
./startup.sh             # Подождите немного после остановки перед запуском

Как только Confluence снова заработает, выбранный вами пользователь сможет войти в систему с полными правами администратора!

Краткие советы и предупреждения

  • Сначала сделайте резервную копию! Серьезно, всегда делайте резервную копию базы данных перед внесением каких-либо прямых изменений.
  • База данных имеет значение: SQL-команды могут потребовать небольших корректировок, если вы используете Oracle или SQL Server вместо PostgreSQL/MySQL.
  • Проверьте имена: Если команды не удаются, дважды проверьте имена таблиц (cwd_user, cwd_group, cwd_membership), так как они могут незначительно отличаться в разных версиях Confluence.
  • Будьте осторожны: Вы обходите обычные проверки безопасности. Убедитесь, что вы предоставляете права администратора правильной учетной записи пользователя.
  • Проверьте свои политики: Этот метод следует использовать только в экстренных ситуациях, когда у вас есть соответствующее разрешение. Многие организации имеют политики в отношении доступа к базам данных и прав администратора. Всегда убеждайтесь, что вы соблюдаете правила ИТ-управления вашей компании и имеете соответствующее одобрение, прежде чем вносить эти изменения.
  • Документируйте свои действия: Если вы используете этот метод, документируйте, что вы сделали, когда и почему. Прозрачность — ключ к успеху при внесении системных изменений, подобных этому.

Заключение

Потеря доступа администратора к вашему экземпляру Confluence может быть стрессовой ситуацией, особенно когда от нее зависит критически важная работа. Хотя метод, описанный в этом руководстве, следует рассматривать как крайнюю меру, он предоставляет ИТ-администраторам жизнеспособное экстренное решение при наличии надлежащего разрешения. Помните, что профилактика всегда лучше лечения; внедрение надлежащего управления доступом администратора и документации может помочь избежать таких ситуаций вовсе.

Часто задаваемые вопросы

Безопасно ли напрямую изменять базу данных Confluence?

Прямые изменения базы данных всегда сопряжены с риском и должны выполняться только квалифицированными администраторами баз данных с соответствующим разрешением, после создания полной резервной копии. Этот подход следует использовать только в экстренных ситуациях, когда нет других вариантов.

Будет ли этот метод работать для Confluence, размещенного в облаке?

Нет, этот метод работает только для локально размещенных экземпляров Confluence, где у вас есть прямой доступ к базовой базе данных. Для Confluence, размещенного в облаке, обратитесь в службу поддержки Atlassian для получения вариантов восстановления доступа администратора.

Существуют ли альтернативные способы восстановления доступа администратора к Confluence?

Да, альтернативы включают: 1) Связь с существующими администраторами, 2) Использование режима восстановления Confluence, если он включен, 3) Восстановление из резервной копии, где у вас был доступ администратора, или 4) Обращение в службу поддержки Atlassian за руководством, специфичным для вашей ситуации.