创建数据库角色
CREATE ROLE
定义一个新的数据库角色。
要使用这个命令,你必须具有CREATEROLE特权或者成为一个数据库超级用户。
使用大纲:
CREATE ROLE name [ [ WITH ] option [ ... ] ]
where option可以是:
SUPERUSER | NOSUPERUSER #如果没有指定,默认值是NOSUPERUSER
| CREATEDB | NOCREATEDB #创建数据库的能力,默认NOCREATEDB
| CREATEROLE| NOCREATEROLE
/*决定是否被允许创建新的角色,
带有CREATEROLE特权的角色也能修改和删除其他角色
默认NOCREATEROLE*/
| INHERIT | NOINHERIT
/*如果新角色是其他角色的成员,该子句决定新角色是否从那些角色中“继承”特权,
自动使用已经被授予给其直接或间接父角色的任何数据库特权。
没有INHERIT,只会授予SET ROLE,默认值是INHERIT。*/
| LOGIN | NOLOGIN
/*是否被允许登录,也就是在客户端连接期间该角色是否能被给定为初始会话认证名称。
当CREATE ROLE被通过CREATE USER调用时默认值会是LOGIN.
默认NOLOGIN*/
| REPLICATION | NOREPLICATION
/*是否是复制角色。是非常高的特权。
具有此属性(或超级用户)才能以复制模式(物理或逻辑复制)连接到服务器,和能够创建或删除复制插槽。
默认NOREPLICATION
*/
| BYPASSRLS | NOBYPASSRLS
/*绕过每一条行级安全性(RLS)策略。
超级用户和被转储表的拥有者 总是可以绕过 RLS。
默认NOBYPASSRLS*/
| CONNECTION LIMIT connlimit
/*指定该角色能建立多少并发连接。
预备事务和后台工作连接都不计入此限制。
-1(默认值)表示无限制*/
| [ ENCRYPTED ] PASSWORD 'password'
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| IN GROUP role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]
| USER role_name [, ...]
| SYSID uid
CREATE ROLE例子
创建一个能登录但是没有密码的角色:
CREATE ROLE example LOGIN;
创建一个有密码的角色:
CREATE USER example WITH PASSWORD '123456';
(CREATE USER和CREATE ROLE完全相同,除了它带有LOGIN)。
创建一个角色,它的口令有效期截止到 2004 年底。在进入 2005 年第一秒时,该口令会失效。
CREATE ROLE miriam
WITH LOGIN PASSWORD '123456'
VALID UNTIL '2005-01-01';
创建一个能够创建数据库并且管理角色的角色:
CREATE ROLE example
WITH CREATEDB CREATEROLE;
DROP ROLE
移除指定的角色。
要删除一个超级用户角色,必须是一个超级用户。
要删除一个非超级用户角 色,必须具有CREATEROLE特权。
在删除该角色前,你必须删除(或者重新授予所有 权)它所拥有的所有对象并且收回该已经授予给该角色的在其他对象上的特权。可以用REASSIGN OWNED和DROP OWNED 命令。
使用大纲:
DROP ROLE [ IF EXISTS ] name [, ...]
IF EXISTS 作用:
如果该角色不存在则不要抛出一个错误,而是发出一个提示。
DROP ROLE例子
删除一个角色:
DROP ROLE example;
查询数据库角色
select [name] from sysusers
where issqlrole=1