PostgreSQL-2-用户权限管理

1、创建与删除用户

CREATE ROLE rolename; 方法1,创建角色

CREATE USER username; 方法2,创建用户

CREATE USER指令创建的用户默认是有登录权限的,而CREATE ROLE没有

DROP ROLE rolename;

DROP USER username;

删除用户/角色     

du 

du username

查看用户和用户的属性

du CREATE ROLE;

du CREATE USER;

查看可设置的管理权限(查看属性和成员属于)

SUPERUSER | NOSUPERUSER → 超级用户,只有超级用户可以创建超级用户

CREATEDB | NOCREATEDB → 创建出来的用户是否有执行 CREATE DATABASE 的权限

CREATEROLE | NOCREATEROLE → 创建出来的用户是否有创建其他角色的权限

LOGIN | NOLOGIN → 创建出来的用户是否有Login的权限

INHERIT | NOINHERIT → 如果创建的一个用户拥有某一个或某几个角色,若指定INHERIT,则表示该用户自动拥有相应角色的权限

CONNECTION LIMIT connlimit → 该用户可以使用的并发连接数量,默认值为-1,表示没有限制

CREATE ROLE role_name WITH optional_permissions;

在创建用户时设定登录权限,比如:

CREATE ROLE r1 WITH SUPERUSER;

CREATE USER u1 WITH PASSWORD 'abc';

2、修改用户权限

ALTER ROLE username WITH attribute_options;

修改权限的命令格式,比如:

ALTER ROLE r1 WITH CREATEDB;

ALTER ROLE u1 WITH PASSWORD 'aaa';

3、切换用户

c - username;   现有database,切换用户

c database username;  切换database,并且切换用户

提示:You are now connected to database "..." as user "...".

这里u1没有CREATEDB权限,如果输入CREATE DATABASE test1,会提示permission denied

4、设置用户权限

CREATE TABLE room(no int, name text, age int);

INSERT INTO room VALUES(1, '小明', 19);

INSERT INTO room VALUES(2, '小红', 18);

INSERT INTO room VALUES(3, '老王', 35);

SELECT * FROM room;

创建一个表格,查看数据

GRANT permission_type ON table_name TO role_name;

给用户设置权限语法格式

GRANT UPDATE ON room TO u1; 给u1对于room表格,赋予UPDATE权限

GRANT ALL ON room TO u1; 给u1对于room表格,赋予所有权限

GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC TO u1; 给u1对于postgres数据库所有表格,赋予SELECT权限

REVOKE permission_type ON table_name FROM user_name;

给用户撤销访问权限

REVOKE SELECT ON room FROM u1; 撤销u1对room表格 SELECT的权限

原文地址:https://www.cnblogs.com/swefii/p/10584078.html