GeekFactory

int128.hatenablog.com

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;