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的权限

posted @ 2019-03-23 15:19  swefii  阅读(808)  评论(0编辑  收藏  举报