角色概述
在腾讯云数据仓库 TCHouse-P 中使用 角色(roles) 来对数据库的访问权限进行管理。角色可以拥有数据库对象(例如表、视图等),并且可以将这些对象的访问权限分配给其他角色。
集群创建时,会提示用户设置初始用户名和密码,这个初始用户为“管理员用户”,该用户拥有创建用户、创建数据库、登录的权限。集群创建完成后,可以使用“管理员用户”连接数据库,一般地,管理员用户拥有最大化的权限,也意味着这个账号要被尽量少的人使用,因此您可以使用管理员用户创建其他用户,并为这些用户授予所需要的权限,具体授权参考 对象权限管理。您也可以创建数据库以及其他对象,参考 定义数据库。登录数据库可以参考 连接数据库。
创建用户
使用 dbadmin 账户登录腾讯云数据仓库 TCHouse-P 集群,执行下面的语句,创建一个新的用户 demo_user:
CREATE ROLE demo_user WITH LOGIN PASSWORD 'demo_user@123';

通过上述操作,创建了一个具有 LOGIN 权限、密码为
demo_user@123
的用户 demo_user,通过这个用户,可以对数据库进行连接。TCHouse-P 数据仓库对用户的访问管理除了 LOGIN 权限外,还有以下其他权限,可以在使用 CREATE ROLE 语句创建角色时对其所能拥有的权限进行授权。权限取值 | 作用 | 默认值 |
SUPERUSER | NOSUPERUSER | 超级用户权限,只有超级用户才能创建其他的超级用户 | NOSUPERUSER |
CREATEDB | NOCREATEDB | 创建数据库的权限 | NOCREATEDB |
CREATEROLE | NOCREATEROLE | 创建和管理角色 | NOCREATEROLE |
INHERIT | NOINHERIT | 决定了用户继承所属 group 的权限 | INHERIT |
LOGIN | NOLOGIN | 连接登录数据库的权限,一般用户拥有该权限,用户组无该权限 | NOLOGIN |
CONNECTION LIMIT | 限制能够并发连接数据库的连接数,-1表示无限制 | -1 |
PASSWORD | 创建用户时设置密码 | 无 |
VALID UNTIL 'timestamp' | 密码的到期时间 | 无 |
RESOURCE QUEUE 'name' | 用户连接后,建立的查询被安排到的资源队列名 | pg_default |
除了在创建用户时能够对其进行权限授予,还能在创建完成后通过 ALTER ROLE 语法对其进行权限的重新赋予。例如给 demo_user 用户增加创建新用户的权限:
ALTER ROLE demo_user WITH CREATEROLE;
对象权限管理
当一个对象(例如 database、table、schema、function 等)被创建时,必然会有一个归属者,这个归属者一般为执行创建对象语句的用户。初始时,只有归属者对这个对象拥有所有的操作权限。例如:
GRANT INSERT ON demo_table TO demo_user;