Как сбросить пароль Redmine и выдать права админа

В свежеустановленный Redmine входят под admin / admin. С версии 3.3 Redmine сразу после первого входа требует сменить этот пароль.

Если забыли пароль админа, зайдите на сервер в папку Redmine (ту, где лежит config/database.yml) и выполните:

cd /path/to/redmine
RAILS_ENV=production bundle exec rails runner '
  u = User.find_by_login("admin")
  u.password = u.password_confirmation = "NewPass-2026!"
  u.admin = true
  u.status = User::STATUS_ACTIVE
  u.save!
  puts "#{u.login}: password changed, admin=#{u.admin}"
'

Команда задаёт новый пароль, выдаёт права администратора и снимает блокировку. Чтобы сделать админом другого пользователя, подставьте его логин вместо admin. Хеш Redmine считает сам, в базу руками лезть не нужно. Я проверил команду на Redmine 5.1, 6.1 и 7.0 и на образе Bitnami с 6.0.

Логин и пароль Redmine по умолчанию

  • Архив с redmine.org и официальный Docker-образ redmine: admin / admin.
  • Bitnami на виртуалке или в облаке: логин user, пароль лежит в /home/bitnami/bitnami_credentials, откройте его через sudo cat. В AWS Lightsail: cat $HOME/bitnami_application_password.
  • Docker-образ Bitnami: user / bitnami1 в старых образах на Debian: раньше это был bitnami/redmine, теперь bitnamilegacy/redmine. В Bitnami Secure Images логин по умолчанию тоже user, а пароль — тот, что вы задали в REDMINE_PASSWORD.

Если пароль по умолчанию не подходит, его уже кто-то сменил. Сбросьте его командой выше.

То же через консоль Rails

Так удобнее, если сначала хотите осмотреться:

cd /path/to/redmine
RAILS_ENV=production bundle exec rails console
# кто сейчас админы
User.where(admin: true).pluck(:login)

u = User.find_by_login("admin")
u.password = u.password_confirmation = "NewPass-2026!"
u.admin = true
u.status = User::STATUS_ACTIVE
u.save!

# вернёт пользователя, если пароль подходит
User.try_to_login("admin", "NewPass-2026!")

Выйти из консоли — exit.

Как выдать права администратора в Redmine

Если можете войти под другим админом, откройте «Администрирование → Пользователи», нажмите на логин нужного пользователя, отметьте «Администратор» и нажмите «Сохранить».

Если войти под админом некому, выполните на сервере команду из начала статьи с логином этого пользователя вместо admin. Если rails runner не запускается, выдайте права прямо в базе. Запрос работает в MySQL и PostgreSQL, подставьте свой логин вместо ivanov:

UPDATE users SET admin = true WHERE login = 'ivanov';

Как подключиться к базе, написано ниже, в разделе про SQL.

Сброс пароля в Bitnami Redmine

В нынешних виртуалках и облачных образах Bitnami Redmine лежит в /opt/bitnami/redmine, а админ там — user, не admin:

cd /opt/bitnami/redmine
RAILS_ENV=production bundle exec rails runner 'u = User.find_by_login("user"); u.password = u.password_confirmation = "NewPass-2026!"; u.admin = true; u.status = User::STATUS_ACTIVE; u.save!'

В старых сборках приложение лежит в apps/redmine/htdocs внутри папки стека, и Ruby у стека свой. У меня в 2017 году стояла такая, с Redmine 3.x. Сначала загрузите окружение стека, потом выполните ту же команду:

# у инсталлятора это /opt/redmine-<версия>
cd /opt/bitnami
./use_redmine
cd apps/redmine/htdocs

Подробнее о старой структуре папок Bitnami — в постах об установке и настройке Bitnami Redmine и о плагинах.

Redmine в Docker

В официальном образе redmine рабочая папка и RAILS_ENV=production уже заданы. Для контейнера с именем redmine:

docker exec redmine bundle exec rails runner 'u = User.find_by_login("admin"); u.password = u.password_confirmation = "NewPass-2026!"; u.admin = true; u.status = User::STATUS_ACTIVE; u.save!'

В образе Bitnami приложение лежит в /opt/bitnami/redmine:

docker exec -w /opt/bitnami/redmine redmine bundle exec rails runner -e production 'u = User.find_by_login("user"); u.password = u.password_confirmation = "NewPass-2026!"; u.admin = true; u.status = User::STATUS_ACTIVE; u.save!'

После команды образ Bitnami печатает справку по rails new. Это шум от его бинстаба bin/rails, пароль к этому моменту уже сохранён. Менять переменную REDMINE_PASSWORD бесполезно: образ читает её только при первом запуске.

Сброс пароля Redmine через SQL

Запасной вариант, если Ruby на сервере сломан и rails runner не запускается. Имя базы, пользователя и пароль возьмите из config/database.yml, секция production:

mysql -u redmine -p redmine            # MySQL или MariaDB
psql -U redmine -h localhost redmine   # PostgreSQL

Так это выглядело на моём сервере Bitnami, база называлась bitnami_redmine:

Консоль MySQL на сервере Bitnami Redmine

Найдите учётку. В таблице users лежат ещё группы и анонимный пользователь, отсюда фильтр по type. В status 1 — активен, 2 — зарегистрирован, 3 — заблокирован:

SELECT id, login, admin, status FROM users WHERE type = 'User';

Поставьте пароль password, разблокируйте учётку и включите обязательную смену пароля при следующем входе:

UPDATE users
SET hashed_password = '353e8061f2befecb6818ba0c034c632fb0bcae1b',
    salt = '',
    status = 1,
    must_change_passwd = true
WHERE login = 'admin';

Запрос работает в MySQL и PostgreSQL без правок. Чтобы выдать права админа другому пользователю, добавьте в SET строку admin = true, а в WHERE подставьте его логин.

Почему пароль — «password»

Redmine сравнивает hashed_password с SHA1(salt + SHA1(password)), см. check_password? в app/models/user.rb. С пустой солью выходит SHA1(SHA1(password)), а 353e8061… — это ровно SHA1(SHA1("password")). Когда вы смените пароль в интерфейсе, Redmine создаст новую случайную соль.

Свой пароль MySQL и MariaDB захешируют прямо в запросе:

UPDATE users
SET hashed_password = SHA1(SHA1('My-own-Pass_2026')), salt = '', status = 1
WHERE login = 'admin';

В PostgreSQL встроенной SHA1 нет. Посчитайте хеш в терминале и вставьте его в UPDATE. На macOS вместо sha1sum пишите shasum:

printf '%s' 'My-own-Pass_2026' | sha1sum | cut -c1-40 | tr -d '\n' | sha1sum | cut -c1-40

Забыли пароль от Redmine, а доступа к серверу нет

Нажмите «Восстановление пароля» на странице входа. Redmine пришлёт ссылку для сброса, если админ не отключил восстановление и на сервере настроена почта. Если ссылки нет или письмо не приходит, попросите администратора задать вам новый пароль в разделе «Администрирование → Пользователи».

Если сброс не помог

  • undefined method 'password_confirmation=' for nil (в старых версиях Ruby — undefined method `password_confirmation=' for nil:NilClass) — пользователя с таким логином нет. Список логинов: User.pluck(:login).
  • Validation failed: Password is too short (minimum is 8 characters) — пароль не проходит правила из «Администрирование → Настройки → Аутентификация».
  • Пароль сбросили, а войти не получается. Возможно, учётка входит через LDAP, и пароль Redmine проверяет там. Добавьте u.auth_source = nil перед u.save!, и учётка перейдёт на локальный пароль.
  • Redmine 4.2+ просит код двухфакторной аутентификации, а телефона нет. Добавьте перед u.save! строку Redmine::Twofa.for_user(u)&.destroy_pairing_without_verify!.
  • Без RAILS_ENV=production Rails стартует в режиме разработки: либо падает, либо открывает development-базу вместо вашей.
  • Когда кто-то получает права админа, Redmine рассылает всем администраторам письмо об этом. Так и должно быть.
Консультирую по продукту, собираю MVP и учу делать продукты самостоятельно. Поработать со мной →