Redshiftでテーブルをtruncateしようとしたらエラーが下記のようなエラーが発生しました。
database=> truncate member; ERROR: must be owner of relation member
権限不足が問題と考え使用しているユーザーにTruncateができる権限を付与しました。
Truncateはテーブル作成・削除と同等な権限が必要なためユーザーをスーパーユーザーにしました。
pg_userテーブルを確認することでユーザーがスーパーユーザーか確認できます。
usesuperが「t」になっているユーザーがスーパーユーザーになります。
今回はtest_userの権限を変更します。
database=# select * from pg_user; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig ----------------+----------+-------------+----------+-----------+----------+----------+----------- rdsdb | 1 | t | t | t | ******** | infinity | test_user | 102 | f | f | f | ******** | | admin_user | 100 | t | t | f | ******** | infinity |
「alter user {ユーザー名} with createuser」のコマンドでスーパーユーザーを設定できます。
database=# alter user test_user with createuser; ALTER USER
コマンド実行後にユーザーの状態を確認するとusesuperが「t」になっています。
systemtestsrsrs=# select * from pg_user; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig ----------------+----------+-------------+----------+-----------+----------+----------+----------- rdsdb | 1 | t | t | t | ******** | infinity | test_user | 102 | f | t | f | ******** | | admin_user | 100 | t | t | f | ******** | infinity | (3 行)