Open5
postgresql: ロールへのDML権限付与がうまくいかない
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO rolename;
すると
WARNING: no privileges were granted for "tablename"
がいっぱい。QueryはOKになってるしうまくいったのかな?と思ったけど、やはりテーブルを見ることができない模様。
調べるとno privileges were granted...は、既にその権限が付与されている場合にも表示される模様。
しかし今回は実際に表示されないのでその線は却下
試しにALL TABLEではなく個別テーブルに権限付与してみるも失敗
GRANT SELECT, INSERT, UPDATE, DELETE ON specific_table TO rolename;
今自分が使っているロールが権限付与する権限を持っていない説
SELECT
schemaname,
tablename,
tableowner,
has_table_privilege(current_user, schemaname||'.'||tablename, 'SELECT WITH GRANT OPTION') as can_grant
FROM pg_tables
WHERE schemaname = 'public';
can_grantがFALSE!
これだーーー
デフォルトだと、そのテーブルを作ったロールかスーパーユーザーじゃないとGRANTができない模様。
今回はテーブル作成ロールに切り替えることで事なきをえたのでした。