User role_name[,...]:与role子句相同。
Sysid uid[,...]:这个子句主要是为了SQL向下兼容。
3.权限管理
在postgreSQL数据库中,每个数据库的逻辑结构对象(包括数据库)都有一个所有者,也就是说任何数据库对象都是属于某个用户的。所有者默认
就拥有所有权限。所以不需要把对象权限再赋给所有者。这也很好理解,自己创建的数据库对象,自己当然有全部的权限。当然,所有者处于安全
考虑也可以选择废弃一些自己的权限。在postgreSQL数据库中,删除一个对象及任意修改它的权限都不能赋予别人.它是所有者固有的,不能被赋予
和撤销.所有者也隐含地拥有把操作对象的权限赋给他人的权力.
一个用户的权限分为两列,一类是在创建用户时候就指定的权限,这些权限包括:
1)超级用户权限
2)创建数据库的权限
3)是否允许Login权限.
这些权限是创建用户时指定的,后面使用alter role 命令来修改.
还有一类权限,是由命令grant和revoke来管理的:
1)在数据库中创建模式(schema);
2)允许在指定数据库中创建临时表;
3)连接某个数据库
4)在模式中创建数据库对象,如创建表,视图,函数等.
5)在一些表中做select,update,insert,delete操作.
6)在一张表的具体列上进行select,update,insert操作.
7)对序列进行查询(执行序列currval函数),使用(执行序列的currval函数和nextvale函数),更新等操作.
8)在声明表上创建触发器
9)可以把表\索引等建到指定表空间.
使用的时候一定要分清楚两类权限,因为其赋权方式不同.如果要给用户创建数据库的权限,创建管理员的权限等,则需要使用’ALERT
ROLE’命令,而如果给用户赋予创建模式,表,索引,函数等权限,则需要grant命令进行.
两种赋权格式:
alter role name [ [with] option [...] ]
grant role_name [,....] to role_name [with admin option]
grant some_privileges on database_object_type object_name to role_name;
其中,”some_privileges”表示在这个数据库对象中的权限,”database_object_type”是数据库对象的类型,如”table”,”sequence”,”seche
ma”等.
权限说明:
评论