創建只讀用戶並且開放特定的表。
安裝數據庫的時候會默認的創建一個postgres 的 superuser 創建別的用戶必須是按照這個用戶開始創建的。
所以說第一個用戶的創建應該是通過 root 登錄linux 的postgres 用戶(不需要輸入密碼) 來創建超級管理員用戶。
1 創建超級用戶的角色
---1 創建超級用戶的角色
Create role super LOGIN PASSWORD '123456' SUPERUSER VALID UNTIL 'infinity'
--- 可以設定過期時間
Create role super LOGIN PASSWORD '123456' SUPERUSER VALID UNTIL '2020-1-1 00:00'
權限中還包括了,過期的參數設置, valid until 'infinity'
2 創建角色組
一般情況是不給組角色登錄權限的。應爲組角色的概念是將一組權限匯聚成一個集合。以方便批量授予別的普通用戶。
Create role grouprole INHERIT
--
GRANT grouprole TO leo;
Inherit 的用法,表示組角色grouprole 的 任何一個成員角色自動繼承 除了 superuser 之外的所有權限。
Noinherit 的功能是禁止將權限授予成員角色。
3 創建自讀role group 角色組(獲得的定表的權限 或者 schema 的權限)
a 創建角色組
CREATE ROLE readaccess;
b 授予訪問的權限
GRANT USAGE ON SCHEMA public TO readaccess;
c 這裏可以設定訪問特定的表還是訪問訪問所有的表的權限
可以訪問public 下的所有表
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readaccess;
訪問指定的表的權限
GRANT SELECT ON tbl_user TO readaccess;
d 如果是訪問所有表 設定新建的表的訪問權限。
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readaccess;
e 創建可登錄的角色(繼承一下上面打下來的江山 哈哈哈哈 大功告成)
CREATE USER son WITH PASSWORD 'youqianla';
GRANT readaccess TO son;
總結一下,還是要多多的動手,不動手不去試永遠都不會。做人應該也是一樣的,沒有經歷就不會知道當事人所經歷了什麼。
有什麼問題,歡迎大家指正。歡迎大家交流。