Подключаемся к встроенной Postgresql базе GitLab

При обновлении GitLab столкнулся с ошибкой:

main: == [advisory_lock_connection] object_id: 53240, pg_backend_pid: 12591
main: == 20240617135002 ReAddTagsNameUniqueIndex: migrating =========================
main: -- indexes(:tags)
main:    -> 0.0227s
main: -- current_schema(nil)
main:    -> 0.0005s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- view_exists?(:postgres_partitions)
main:    -> 0.0015s
main: -- index_exists?(:tags, :name, {:unique=>true, :name=>"index_tags_on_name", :algorithm=>:concurrently})
main:    -> 0.0036s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0004s
main: -- add_index(:tags, :name, {:unique=>true, :name=>"index_tags_on_name", :algorithm=>:concurrently})
main: -- execute("RESET statement_timeout")
main:    -> 0.0004s
main: == [advisory_lock_connection] object_id: 53240, pg_backend_pid: 12591
rake aborted!

При выполнении команды:

# gitlab-rake db:migrate -v

Стало немного понятнее, где ошибка:

StandardError: An error has occurred, all later migrations canceled:

PG::DuplicateTable: ERROR:  relation "index_tags_on_name" already exists

Соответственно, придется подключаться к базе и править эти дубликаты руками. Можно подключиться к базе данных из консоли при помощи команды:

# sudo -u gitlab-psql /opt/gitlab/embedded/bin/psql -h /var/opt/gitlab/postgresql -d gitlabhq_production

Но хотелось бы на будущее настроить удаленный доступ при помощи DbBeaver, чем собственно мы сейчас и займемся. И первым делом создадим супер-пользователя и назначим ему пароль (подключившись через консоль конечно).

CREATE ROLE chernousov WITH LOGIN SUPERUSER PASSWORD 'xSecretPasswordx';

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

В каталоге /var/opt/gitlab/postgresql/data изменяем файлы:

  • postgresql.conf – listen_addresses = ‘*’
  • pg_hba.conf – host all all 0.0.0.0/0 md5

Перезапускаем встроенный Postgresql командой:

# gitlab-ctl restart postgresql

Подключаемся через DbBeaver.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *