Postgres 建立Role並賦予許可權的操作
阿新 • • 發佈:2021-01-18
建立Role
CREATE USER <role_name> PASSWORD '<role_password>';
賦予許可權
賦予database所有許可權
GRANT ALL ON DATABASE <db_name> TO <role_name>;
賦予只讀許可權 (不能再db level直接賦予SELECT許可權)
GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <role_name>;
檢視許可權
SELECT * FROM information_schema.role_table_grants;
補充:PostgreSql角色、使用者建立
1、資料庫角色
資料庫角色與作業系統使用者的觀念完全不同,其可以方便的維護資料庫,但不是必須的。
建立資料庫角色
CREATE ROLE name;
刪除存在的角色
DROP ROLE name;
建立和刪除使用者
CREATE USER name; dropuser name;
檢查存在的資料庫角色
SELECT rolname FROM pg_roles;
\du #用這個命令也可以檢視
資料庫預設使用者
資料庫在安裝完成後會在作業系統以及資料庫中都建立一個預設的使用者postgres,這個角色是“超級使用者”,想使用資料庫的更多功能,必須先用這個使用者連線資料庫。
資料庫連線命令
psql -U name;
2、資料庫角色屬性
資料庫角色有大量的屬性,這些屬性定義了角色的資料庫登入以及操作許可權。
CREATE ROLE name [ [ WITH ] option [ ... ] ] where option can be: SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION | NOREPLICATION | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'timestamp' | IN ROLE role_name [,...] | IN GROUP role_name [,...] | ROLE role_name [,...] | ADMIN role_name [,...] | USER role_name [,...] | SYSID uid
登入許可權
LOGIN屬性用於賦予角色擁有連線資料庫許可權,命令二選一
CREATE ROLE name LOGIN; CREATE USER name;
CREATE USER 和CREATE ROLE幾乎相同,除了CREATE USER預設帶有登入許可權,CREATE ROLE沒有。
超級使用者
超級使用者擁有資料庫的所有許可權,必須小心超級使用者的許可權賦予,命令如下
CREATE ROLE name SUPERUSER;
建立資料庫許可權
CREATE ROLE name CREATEDB;
建立角色許可權
CREATE ROLE name CREATEROLE;
初始化複製
CREATE ROLE name REPLICATION LOGIN;
密碼
密碼是使用者登入資料庫的客戶端認證方式。密碼建立後採用md5加密演算法加密。
CREATE ROLE name PASSWORD 'string';
更改許可權
ALTER ROLE name SET enable_indexscan TO off;
3、角色組
角色組類似於作業系統的組許可權,可以非常方便的對組內成員的許可權進行管理。
可以用過GRANT和REVOKE操作進行許可權的賦予和回收。
GRANT group_role TO role1,... ; REVOKE group_role FROM role1,... ;
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。