iT邦幫忙

0

Postgresql drop role 出現 error

  • 分享至 

  • xImage

各位前輩好,我目前在嘗試開一個只讀的role,在CREATE role後,完成GRANT select權限,然後測試將role刪掉時出現以下錯誤

testDB=> drop role role01;
ERROR:  role "role01" cannot be dropped because some objects depend on it
DETAIL:  4 objects in database TimestreamDB

(補充:我是使用admin role執行以上操作)

想請問以下問題:

  1. 我目前的理解是,在同一個instance中,不同的DB下CREATE的role並沒有區別,因為role是否能對任何一個DB進行操作,都需要GRANT,請問這樣的理解正確嗎?
  2. 如何查看某個role目前是否與任何object有關聯?
  3. 若遇到上述ERROR該如何排除並移除掉這個role?

以上若有不清楚的部分,請提出,我再補充,感謝~

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
一級屠豬士
iT邦大師 1 級 ‧ 2022-02-18 15:45:37
最佳解答
select pgn.nspname as schema_name,
       pgc.relname as object_name,
       pgr.rolname as owner,
       case pgc.relkind
         when 'r' then 'TABLE'
         when 'm' then 'MATERIALIZED_VIEW'
         when 'i' then 'INDEX'
         when 'S' then 'SEQUENCE'
         when 'v' then 'VIEW'
         when 'c' then 'TYPE'
         else pgc.relkind::text
       end as object_type
from pg_class pgc
  join pg_roles pgr on pgr.oid = pgc.relowner
  join pg_namespace pgn on pgn.oid = pgc.relnamespace
where pgn.nspname not in ('information_schema', 'pg_catalog')
and pgn.nspname not like 'pg_toast%'
and pgr.rolname = 'yourusername'
order by pgn.nspname, pgc.relname;
REASSIGN OWNED BY yourusername TO postgres;

REASSIGN 文件

Peter iT邦新手 4 級 ‧ 2022-03-09 09:02:30 檢舉

感謝協助!

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-02-18 15:09:16

REVOKE ALL ON SCHEMA schema01 FROM role01;
然後參考這篇
看看合不合用

Peter iT邦新手 4 級 ‧ 2022-03-09 09:02:34 檢舉

感謝協助!

我要發表回答

立即登入回答