PostgreSQL权限笔记

参考博客:http://www.cnblogs.com/stephen-liu74/archive/2012/05/18/2302639.html

PostgreSQL是通过角色来管理数据库访问权限的,我们可以将一个角色看成是一个数据库用户,或者一组数据库用户。角色可以拥有数据库对象,如表、索引,也可以把这些对象上的权限赋予其它角色,以控制哪些用户对哪些对象拥有哪些权限。

数据库角色

CREATE ROLE role_name;    #创建角色
DROP ROLE role_name;        #删除角色
SELECT usename FROM pg_role;    #查看角色
\du
alter user user_name with password 'new password';

角色属性

一个数据库角色可以有一系列属性,这些属性定义他的权限,以及与客户认证系统的交互。权限分为以下几种:LOGIN、SUPERUSER、CTEATEDB、CREATEROLE

- 登录权限

CREATE ROLE name LOGIN PASSWORD '123456‘;
CREATE USER name PASSWORD '123456';

- 超级用户

数据库的超级用户拥有该数据库的所有权限。创建超级用户必须是以超级用户的身份执行以下命令:

CREATE ROLE name SUPERUSER;

- 创建数据库

CREATE ROLE name CREATEDB;

- 创建角色

CREATE ROLE name CREATEROLE;

数据库对象权限

数据库对象在被创建时都会被赋予一个所有者,通常而言,所有者就是执行对象创建语句的角色。对于大多数类型的对象,其初始状态是只有所有者(或超级用户)可以对该对象做任何事情。如果要允许其它用户可以使用该对象,必须赋予适当的权限。

SELECT、INSERT、UPDATE、DELETE、RULE、REFERENCES、TRIGGER、CREATE、TEMPORARY、EXECUTE、USAGE11种权限。

GRANT UPDATE ON table_name TO user_name;

我们也可以用特殊的名字PUBLIC把对象的权限赋予系统中的所有角色。在权限声明的位置上写ALL,表示把适用于该对象的所有权限都赋予目标角色。

 REVOKE ALL ON accounts FROM PUBLIC;    #对所有角色(PUBLIC)撤销在accounts对象上的所有权限(ALL)
posted @ 2017-06-13 20:59  bingo711x  阅读(264)  评论(0编辑  收藏  举报