推薦權限管理方式:用戶組
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換成對應的用戶名)