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)