PostgreSQL 用户和权限管理

建立用户post

CREATE ROLE rolename;
CREATE USER username;

注:CREATE USER和CREATE ROLE的区别在于,CREATE USER指令建立的用户默认是有登陆权限的,而CREATE ROLE没有。

建立用户时设定用户权限属性code

基本语法格式 CREATE ROLE role_name WITH optional_permissions;io

示例:在建立用户时设定登陆权限。
CREATE ROLE username WITH LOGIN;

注:能够经过\h CREATE ROLE指令查看所有可设置的管理权限

修改用户权限属性table

修改权限的命令格式 ALTER ROLE username WITH attribute_options;test

例如:可经过如下方式禁止用户登陆
ALTER ROLE username WITH NOLOGIN;

设置访问权限登录

语法格式以下: GRANT permission_type ON table_name TO role_name;sed

示例:
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显示全部可设置的访问权限

撤销用户访问权限date

语法格式以下: 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'

相关文章
相关标签/搜索