PostgreSQL 創建只讀用戶,並開放特定的表。(實例)

創建只讀用戶並且開放特定的表。

安裝數據庫的時候會默認的創建一個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;

總結一下,還是要多多的動手,不動手不去試永遠都不會。做人應該也是一樣的,沒有經歷就不會知道當事人所經歷了什麼。

有什麼問題,歡迎大家指正。歡迎大家交流。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章