Postgresql
Postgres 10.5:向不是所有者的使用者授予完整的架構訪問權限
所以我遇到的根本問題是嘗試將我的本地 Postgres 10.5 實例遷移到 RDS。RDS 不給最終使用者
SuperUser
角色,所以我在嘗試從 pg_dump 導入時遇到了很多權限問題。例如,以使用者身份登錄
postgres
- 這是我創建 RDS 實例時創建的使用者。亞馬遜稱之為“root 使用者”:CREATE SCHEMA f_site; GRANT ALL ON SCHEMA f_site TO postgres; GRANT ALL PRIVILEGES ON SCHEMA f_site TO postgres; GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA f_site TO postgres; GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA f_site TO postgres; GRANT ALL PRIVILEGES ON DATABASE mydb to postgres;
這些都設置沒有錯誤。現在,所有者發生了變化:
ALTER SCHEMA f_site OWNER TO schemaadmin;
太好了,但是如果我嘗試立即執行另一個授權,只是為了測試我的權限,仍然以
postgres
使用者身份登錄,同一個會話:GRANT ALL PRIVILEGES ON SCHEMA f_site TO postgres; ERROR: permission denied for schema f_site
基本上,我試圖通過向
postgres
使用者授予其創建的所有內容的完全授權,然後將該對象的所有權轉移給另一個角色來創建一個“偽超級使用者”。這是因為我的 pgdump 備份中的第一行本質上是創建模式和設置模式所有者,然後(數千行之後)對其進行更改/添加。通常對於超級使用者來說,這不會是一個問題。
感謝您的任何建議。
好的,在進行了幾次搜尋後發現了這一點。
本質上,您需要將最終擁有該對象的相同角色授予您正在使用的使用者。
所以在我的情況下:
postgres
是我想成為我的“偽超級使用者”的使用者,並且schemaadmin
是擁有對象的使用者角色。GRANT schemaadmin TO postgres;
之後,schemaadmin 擁有的所有東西,postgres 都可以修改。
您需要向使用者授予架構使用權限。
GRANT USAGE ON SCHEMA "schema_name" TO role;