GitLabでRDS for PostgreSQLを使う
GitLabでRDS for PostgreSQLを使う場合にハマったのでメモです。
TL;DR
GitLabを起動した際のマイグレーションスクリプトで CREATE EXTENSION pg_trgm;
が実行されるが、一般ユーザは CREATE EXTENSION
の権限を持っていないのでエラーが発生します。
あらかじめ、スーパーユーザで当該SQLを実行しておく必要があります。
具体的な事象と対策
まず、GitLabが使うデータベースとユーザを作成します。
# postgresデータベースに接続 psql -h $RDS_HOST -U $RDS_ADMIN postgres
-- データベースやユーザを作成 CREATE DATABASE gitlab; CREATE USER gitlab PASSWORD 'gitlab'; GRANT ALL PRIVILEGES ON DATABASE gitlab ON gitlab;
このままでは、GitLabを起動した際にログに下記のメッセージが出力されます。
ActiveRecord::StatementInvalid: PG::InsufficientPrivilege: ERROR: permission denied to create extension "pg_trgm"
そのため、GitLabが使うデータベースに対して pg_tram
を有効化します。
# gitlabデータベースに接続 psql -h $RDS_HOST -U $RDS_ADMIN gitlab
-- pg_tramを有効化 CREATE EXTENSION pg_trgm;