2.2. ロールの作成 (psql)

前提条件

DBへの接続

0. 準備

1. 事前作業

管理ユーザの確認

コマンド:

psql \
  --host=${DB_HOSTNAME} \
  --username=${DB_USER} \
  --dbname=${DB_NAME} \
  -c '\du'

結果(例):

                                                       ロール一覧
    ロール名     |                                       属性                                       |     メンバー
-----------------+----------------------------------------------------------------------------------+-------------------
 pgadmin         | ロールを作成できる, DBを作成できる                                              +| {rds_superuser}
                 | パスワード有効期限infinity                                                       |
 rds_replication | ログインできない                                                                 | {}
 rds_superuser   | ログインできない                                                                 | {rds_replication}
 rdsadmin        | スーパーユーザ, ロールを作成できる, DBを作成できる, レプリケーション, Bypass RLS+| {}
                 | パスワード有効期限infinity                                                       |
 rdsrepladmin    | 継承なし, ログインできない, レプリケーション                                     | {}

2. データベースに接続するためのユーザ作成

2.1. ロール作成

コマンド:

echo "CREATE ROLE redmine_handson LOGIN ENCRYPTED PASSWORD '#dbpass321' NOINHERIT VALID UNTIL 'infinity';" \
  | psql --host=${DB_HOSTNAME} \
    --username=${DB_USER} \
    --dbname=${DB_NAME}

結果:

CREATE ROLE

コマンド:

psql \
  --host=${DB_HOSTNAME} \
  --username=${DB_USER} \
  --dbname=${DB_NAME} \
  -c '\du'

結果(例):

                                                       ロール一覧
    ロール名     |                                       属性                                       |     メンバー
-----------------+----------------------------------------------------------------------------------+-------------------
 pgadmin         | ロールを作成できる, DBを作成できる                                              +| {rds_superuser}
                 | パスワード有効期限infinity                                                       |
 rds_replication | ログインできない                                                                 | {}
 rds_superuser   | ログインできない                                                                 | {rds_replication}
 rdsadmin        | スーパーユーザ, ロールを作成できる, DBを作成できる, レプリケーション, Bypass RLS+| {}
                 | パスワード有効期限infinity                                                       |
 rdsrepladmin    | 継承なし, ログインできない, レプリケーション                                     | {}
 redmine_handson     | 継承なし                                                                        +| {}
                 | パスワード有効期限infinity                                                       |

2.2. マスタユーザへのロール許可

コマンド:

echo "GRANT redmine_handson TO pgadmin;" \
  | psql \
    --host=${DB_HOSTNAME} \
    --username=${DB_USER} \
    --dbname=${DB_NAME}

結果:

GRANT ROLE

コマンド:

psql \
  --host=${DB_HOSTNAME} \
  --username=${DB_USER} \
  --dbname=${DB_NAME} \
  -c '\du'

結果(例):

                                                            ロール一覧
    ロール名     |                                       属性                                       |          メンバー
-----------------+----------------------------------------------------------------------------------+-----------------------------
 pgadmin         | ロールを作成できる, DBを作成できる                                              +| {rds_superuser,redmine_handson}
                 | パスワード有効期限infinity                                                       |
 rds_replication | ログインできない                                                                 | {}
 rds_superuser   | ログインできない                                                                 | {rds_replication}
 rdsadmin        | スーパーユーザ, ロールを作成できる, DBを作成できる, レプリケーション, Bypass RLS+| {}
                 | パスワード有効期限infinity                                                       |
 rdsrepladmin    | 継承なし, ログインできない, レプリケーション                                     | {}
 redmine_handson     | 継承なし                                                                        +| {}
                 | パスワード有効期限infinity                                                       |

3. 事後作業

完了