Postgres 創建Role並賦予權限的操作

創建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, ... ;

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: