用户与角色
角色的概念
- 将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户就称为角色(Role)
- 角色在生产系统中一般被视为用户组,利用角色对用户进行批量授权
创建用户角色
CREATE USER name WITH [option]
授予权限 | 取消授予权限 | 描述 |
---|---|---|
SUPERUSER | NOSUPERUSER | 超级用户权限 |
CREATEDB | NOCREATEDB | 创建数据库权限 |
CREATEROLE | NOCREATEROLE | 创建角色权限 |
LOGIN | NOLOGIN | 登陆数据库权限 |
ACCOUNT LOCK | ACCOUNT UNLOCK | 解锁用户 |
REPLICATION | NOREPLICATION | 发起流复制或把系统放入或退出备份模式的权限 |
权限 | 描述 |
---|---|
CONNECTION LIMIT num | 设置角色能创建的最大并发连接数 |
PASSWORD password | 设置角色口令,使用口令认证的角色在没有设置口令时会导致登陆失败 |
VALID UNTIL ‘time’ | 设置角色口令有效期限,缺省为永久有效 |
IN ROLE role_name | 列出一个或多个现有角色 当前创建的新角色作为这些角色的成员加入其中 |
ROLE role_name | 列出一个或多个现有角色 这些角色将作为成员加入到当前创建的新角色中 |
ADMIN role_name | 提及的角色被使用 WITH ADMIN OPTION 加入到新角色中 能够把这个角色中的成员关系授予别人 |
用户示例
ksql test system # 连接数据库
CREATE USER user01; # 创建用户
ALTER USER user01 CREATEDB; # 授予用户创建数据库权限
\du user01; # 列出角色信息
ALTER USER user01 PASSWORD 'kingbase'; # 设置user01用户密码
\c test user01; # 使用user01登陆test数据库
\conninfo # 查看当前连接信息
\c test system; # 切换管理员登陆
ALTER USER user01 CONNECTION LIMIT 10; # 设置user01最大并发连接数10
角色示例
\c test system # 切换管理员
CREATE ROLE role01 PASSWORD 'kingbase'; # 创建角色role01并设置密码
\du role01
让用户成为角色的成员
# 第一种方法
GRANT rolename TO username;
# 第二种方法
CREATE USER username IN ROLE rolename;
创建用户和角色等价
CREATE USER user01 CONNECTION LIMIT 2 PASSWORD 'kingbase' VALID UNTIL '2023-12-31'; # 创建用户user01设置最大并发连接数2 密码为kingbase 密码到期时间为2023-12-31
CREATE ROLE role01 CONNECTION LIMIT 2 PASSWORD 'kingbase' VALID UNTIL '2023-12-31' LOGIN; # 创建角色user01设置最大并发连接数2 密码为kingbase 密码到期时间为2023-12-31 允许登陆[角色默认不允许登陆]
对象访问权限入门
对象分类
- 模式对象:可视为一个表的集合,可以理解为一个存储目录,包含视图、索引、数据类型、函数和操作符等
- 非模式对象:其他的数据库对象,如数据库、表空间、用户、权限。用户或角色访问模式对象或非模式对象的能力称为对象权限
对象访问权限概述
- 对象都会有所有者,所有者一般是对象的创建者,所有者也可以被改变
- 初始值下,只有所有者(或者超级用户)能够对该对象执行任何操作
- 其他用户和角色要使用对象,必须显式为其授予访问该对象的相关权限
使用管理工具
连接数据库
数据库权限
查看system用户对test数据的权限
数据库权限说明
权限 | 说明 |
---|---|
ALL | 一次授予所有可用权限 |
CREATE | 允许在数据库中创建新的schema table index |
TEMPORARY | 允许在使用指定数据库时创建临时表 |
TEMP | 允许在使用指定数据库时间创建临时表 |
CONNECT | 允许用户连接到指定的数据库 |
模式访问权限
模式权限说明
用户对"模式对象"的访问权限
权限 | 说明 |
---|---|
ALL | 一次授权所有可用权限 |
DELETE | 对表或视图执行删除数据 |
SELECT | 对表进行读取 |
TRUNCATE | 允许对表执行截断清空操作 |
INSERT | 对表或视图执行插入 |
REFERENCES | 允许创建外键约束 |
UPDATE | 对表或表上特定列或视图执行更新 |
TRIGGER | 允许在表上创建触发器 |