PostgreSQL 用戶和權限管理


PostgreSQL 用戶和權限管理

創建
CREATE ROLE rolename;
CREATE USER username;
CREATE USER和CREATE ROLE的區別在於,CREATE USER指令創建的用戶默認是有登錄權限的,而CREATE ROLE沒有。

創建用戶時設定用戶屬性

基本語法格式
CREATE ROLE role_name WITH optional_permissions;
示例:在創建用戶時設定登錄權限。
CREATE ROLE username WITH LOGIN;
可以通過\h CREATE ROLE指令查看全部可設置的管理權限


修改用戶屬性
修改權限的命令格式
ALTER ROLE username WITH attribute_options;
例如:可通過以下方式禁止用戶登錄
ALTER ROLE username WITH NOLOGIN;

設置訪問權限
語法格式如下:
GRANT permission_type ON table_name TO role_name;

示例
GRANT UPDATE ON demo TO demo_role; --賦予demo_role demo表的update權限
GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC to demo_role; --賦予demo_role所有表的SELECT權限

特殊符號:ALL代表所訪問權限,PUBLIC代表所有用戶
GRANT ALL ON demo TO demo_role; --賦給用戶所有權限
GRANT SELECT ON demo TO PUBLIC; --將SELECT權限賦給所有用戶

\z或\dp指令顯示用戶訪問權限。
\h GRANT顯示所有可設置的訪問權限

撤銷用戶訪問權限
語法格式如下:
REVOKE permission_type ON table_name FROM user_name;
其中permission_type和table_name含義與GRANT指令中相同。

用戶組
在postgres中用戶實際上是role,同時組也是role。 包含其他role的role就是組。

創建組示例:
CREATE ROLE temporary_users;
GRANT temporary_users TO demo_role;
GRANT temporary_users TO test_user;

切換ROLE
SET ROLE role_name; --切換到role_name用戶
RESET ROLE; --切換回最初的role


INHERIT權限:該屬性使組成員擁有組的所有權限
ALTER ROLE test_user INHERIT;

刪除用戶和組
刪除用戶和組很簡單:

DROP ROLE role_name;
DROP ROLE IF EXISTS role_name;

 

應用

create user zabbix ;
create database zabbix owner zabbix;
alter user zabbix password zabbix;
grant all on DATABASE zabbix to zabbix;

COMMENT ON DATABASE zabbix is 'used for  zabbix data store'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM