400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
流计算引擎
灾难恢复
系统配置参数
索引
扩展
SQL 参考
常见问题(FAQ)
定义一个新的数据库角色(用户或组)。
CREATE ROLE name [[WITH] option [ ... ]]
其中option可以是:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| CREATEUSER | NOCREATEUSER
| CREATEEXTTABLE | NOCREATEEXTTABLE
[ ( attribute='value'[, ...] ) ]
where attributes and value are:
type='readable'|'writable'
protocol='gpfdist'|'http'
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| CONNECTION LIMIT connlimit
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
| VALID UNTIL 'timestamp'
| IN ROLE rolename [, ...]
| ROLE rolename [, ...]
| ADMIN rolename [, ...]
| USER rolename [, ...]
| SYSID uid [, ...]
| RESOURCE QUEUE queue_name
| RESOURCE GROUP group_name
| [ DENY deny_point ]
| [ DENY BETWEEN deny_point AND deny_point]
CREATE ROLE在 YMatrix 数据库系统中添加了新角色。 角色是可以拥有数据库对象并具有数据库特权的实体。 根据角色的使用方式,可以将角色视为用户,组或两者。 您必须具有CREATEROLE特权或是数据库超级用户才能使用此命令。
请注意,角色是在系统级别定义的,并且对于 YMatrix 数据库系统中的所有数据库均有效。
name
SUPERUSER
NOSUPERUSER
CREATEDB
NOCREATEDB
CREATEROLE
NOCREATEROLE
CREATEUSER
NOCREATEUSER
CREATEEXTTABLE
NOCREATEEXTTABLE
INHERIT
NOINHERIT
LOGIN
NOLOGIN
REPLICATION
NOREPLICATION
CONNECTION LIMIT connlimit
PASSWORD password
ENCRYPTED
UNENCRYPTED
VALID UNTIL 'timestamp'
IN ROLE rolename
ROLE rolename
ADMIN rolename
RESOURCE GROUP group_name
RESOURCE QUEUE queue_name
DENY deny_point
DENY BETWEEN deny_point AND deny_point
DAY day [ TIME 'time' ]
{'Sunday' | 'Monday' | 'Tuesday' |'Wednesday' | 'Thursday' | 'Friday' | 'Saturday' | 0-6 }
{ 00-23 : 00-59 | 01-12 : 00-59 { AM | PM }}
DENY BETWEEN deny_point AND deny_point
添加和删除角色成员(管理组)的首选方法是使用GRANT和REVOKE。
VALID UNTIL子句仅为密码而不是角色定义过期时间。 使用非基于密码的身份验证方法登录时,不会强制使用到期时间。
INHERIT属性控制可授予特权(数据库对象和角色成员的访问特权)的继承。 它不适用于由CREATE ROLE和ALTER ROLE设置的特殊角色属性。 例如,即使设置了INHERIT,具有CREATEDB特权的角色成员也不会立即授予创建数据库的能力。 这些特权/属性永远不会被继承: SUPERUSER,CREATEDB,CREATEROLE, CREATEEXTTABLE,LOGIN,RESOURCE GROUP和RESOURCE QUEUE。 必须在每个用户级角色上设置属性。
由于向后兼容,INHERIT属性是默认属性。 在以前的 YMatrix 数据库版本中,用户始终可以访问其所属组的所有特权。 但是,NOINHERIT提供与SQL标准中指定的语义更接近的匹配。
使用CREATEROLE特权时要小心。 对于CREATEROLE-role的特权,没有继承的概念。 这意味着,即使一个角色没有特定的特权,但被允许创建其他角色, 它也可以轻松地创建另一个角色,而该角色的特权不同于其自己的角色(创建具有超级用户特权的角色除外)。 例如,如果角色具有CREATEROLE特权,但没有CREATEDB特权,则它可以使用CREATEDB特权创建新角色。 因此,将具有CREATEROLE特权的角色视为几乎超级用户角色。
超级用户绝不执行CONNECTION LIMIT选项。
使用此命令指定未加密的密码时必须小心。 密码将以明文形式传输到服务器,并且也可能会记录在客户端的命令历史记录或服务器日志中。 但是,客户端程序createuser传输加密的密码。 另外,psql包含命令\password,可用于稍后安全地更改密码。
创建一个可以登录但不提供密码的角色:
CREATE ROLE jonathan LOGIN;
创建一个属于资源队列的角色:
CREATE ROLE jonathan LOGIN RESOURCE QUEUE poweruser;
使用有效期至2016年底的密码创建角色 (CREATE USER与CREATE ROLE相同,只不过它暗含了LOGIN):
CREATE USER joelle WITH PASSWORD 'jw8s0F4' VALID UNTIL '2017-01-01';
创建一个可以创建数据库并管理其他角色的角色:
CREATE ROLE admin WITH CREATEDB CREATEROLE;
创建一个角色,该角色在星期日不允许登录访问:
CREATE ROLE user3 DENY DAY 'Sunday';
创建一个可以创建类型为'gpfdist'的可读可写外部表的角色:
CREATE ROLE jan WITH CREATEEXTTABLE(type='readable', protocol='gpfdist')
CREATEEXTTABLE(type='writable', protocol='gpfdist');
创建一个角色,分配一个资源组:
CREATE ROLE bill RESOURCE GROUP rg_light;
SQL标准定义了用户和角色的概念,但是将它们视为不同的概念,并将所有定义用户的命令留给数据库实现指定。 在 YMatrix 数据库中,用户和角色被统一为单一类型的对象。 因此,角色具有比标准中更多的可选属性。
CREATE ROLE在SQL标准中,但是该标准仅需要以下语法:
CREATE ROLE name [WITH ADMIN rolename]
YMatrix 数据库扩展是允许多个初始管理员,以及CREATE ROLE的所有其他选项。
通过为用户提供NOINHERIT属性, 而为角色赋予INHERIT属性,可以最接近地逼近SQL标准指定的行为。