postgres的權限管理


推薦權限管理方式:用戶組

1、創建不同權限的用戶組

create role PROJ1_DEV_GROUP; //表的Owner,擁有表的所有操作權限。
create role PROJ1_WRITE_GROUP; //表的寫入權限,可以寫入數據至相應表。
create role PROJ1_VIEW_GROUP; //查看表數據權限,可以查看相應表的數據。

2、對各個用戶組進行授權

授權PROJ1擁有SCHEMA1中的相關權限。
grant create,usage on schema public to PROJ1_DEV_GROUP;
grant usage on schema public to PROJ1_WRITE_GROUP;
grant select on schema public to PROJ1_VIEW_GROUP;

3、各個用戶組設定對未來新建表的權限

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO PROJ1_VIEW_GROUP; //設置只讀

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT usage ON TABLES TO PROJ1_WRITE_GROUP; // 設置寫權限

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT create, usage ON TABLES TO PROJ1_DEV_GROUP; //建表權限

4、創建新用戶並設置只讀權限

CREATE USER dev_test WITH PASSWORD 'test@123456'; //創建新用戶

GRANT PROJ1_VIEW_GROUP to dev_test; //給該用戶設置所有表只讀權限 

注意:后續權限的增加和收回都只需操作對應的用戶組即可,比較方便

不推薦的管理方式:pgsql對單個用戶進行權限管理

1、對單個用戶授權

GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC to users;

所有用戶對建表事件進行監聽,有新建表則自動加上select權限

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO PUBLIC; //默認所有人對在public Schema中新創建的表具有讀權限。

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO PROJ1_VIEW_GROUP; //也可對單個用戶組進行監聽,用戶組下的所有用戶即可獲得新建表的權限

注意:該命令只對已有用戶起作用,新建用戶需重新執行該sql或只對單個用戶進行設置(將PUBLIC換成對應的用戶名)


參考文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM