人大金仓KCA | 用户与角色
- 一、知识预备
- 1. 用户和角色
- 二、具体实施
- 1. 用户管理-命令行
- 1.1 创建和修改用户
- 1.2 修改用户密码
- 1.3 修改用户的并发连接数
- 1.4 修改用户的密码有效期
- 2.用户管理-EasyKStudio
- 2.1 创建和修改用户
- 2.2 修改用户密码
- 2.3 修改用户的并发连接数
- 2.4 修改用户的密码有效期
- 3. 角色管理-命令行
- 3.1 创建角色
- 3.3 使用角色对用户授权
- 4.角色管理-EasyKStudio
- 4.1 创建角色
- 4.2 使用角色对用户授权
- 4.3 验证
- 5. 不同场景下的不同用户权限需求
OS版本:CentOS-7-x86_64-Everything-2009
KES版本:KingbaseES_V008R006C008B0014_Lin64
许可证版本:license_39893_0.dat(开发版)
一、知识预备
1. 用户和角色
用户
数据库用户通常指的是能够访问和操作数据库系统的人员或程序。用户通过认证和授权机制与数据库进行交互、执行查询、插入、更新和删除等。数据库用户代表数据库的使用者,应该为每个使用者创建一个用户,避免多人使用同一个数据库用户。
角色
将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户就称为角色(Role)。角色在生产系统中一般被视作用户组。数据库角色是数据库管理系统中的一种权限管理机制,它可以将一组权限分配给角色,然后将角色授予用户。通过使用角色,可以简化权限管理,提高系统安全性,并便于系统维护。
在KingBaseES中,用户和角色没有什么区别,向角色赋予login权限,角色也可以登录数据库
- create role创建角色时:默认使用
nologin选项 - create user创建用户时:默认使用
login选项
二、具体实施
1. 用户管理-命令行
1.1 创建和修改用户
[Step1]: 使用system用户登录test数据库,创建 user01 用户,不指定密码
ksql -Usystem -d test
create user user01;
\du user01

[Step2]: 创建user02用户,指定密码为kingbase
create user user02 password 'kingbase';

[Step3]: 修改user01用户,授予createdb权限
alter user user01 CREATEDB;

1.2 修改用户密码
[Step1]: 用户在没有密码的时候不允许登录
ksql -Uuser01 -d test

[Step2]: 修改用户的密码,密码不允许使用双引号
alter user user01 password 'kingbase';

1.3 修改用户的并发连接数
[Step1]: 限制用户的最大并发连接数
alter user user01 connection limit 1;

1.4 修改用户的密码有效期
[Step1]: 将用户的密码有效期设置为已过期
alter user user01 valid until '2023-12-12';

[Step2]: 将用户的密码有效期设置为永不过期
alter user user01 valid until 'infinity';

[Step3]: 删除用户
当用户存在依赖关系时,无法删除用户
drop user user02;

2.用户管理-EasyKStudio
2.1 创建和修改用户
[Step1]: 创建 user11 用户,指定密码为kingbase


[Step2]: 修改user11用户,授予createdb权限


2.2 修改用户密码
[Step1]: 修改用户的密码

2.3 修改用户的并发连接数
[Step1]: 限制用户的最大并发连接数

2.4 修改用户的密码有效期
[Step1]: 将用户的密码有效期设置为永不过期

[Step2]: 删除用户


3. 角色管理-命令行
3.1 创建角色
[Step1]: 创建角色,角色和用户没什么区别,区别在于角色默认不允许登录
create role role01 password 'kingbase';

3.3 使用角色对用户授权
加入到角色的用户默认会自动继承角色所拥有的全部权限。
[Step1]: 在之前实验中我们创建了一张student表
select * from student;

[Step2]: 创建两个测试用户,分别授予inherit和noinherit权限
create user test01 password 'kingbase' inherit;
create user test02 password 'kingbase' noinherit;
- inherit:用户会自动继承所属角色的权限,默认选项
- noinherit:用户不会继承所属角色的权限

[Step3]: 授予role01角色查询权限
grant select on table student to role01;
在这里插入图片描述
[Step4]: 将测试用户加入角色
grant role01 to test01,test02;

[Step5]: 验证:验证测试用户的查询权限
\c - test01
select * from student;
\c - test02
select * from student;

4.角色管理-EasyKStudio
4.1 创建角色
[Step1]: 创建角色,用户和角色在【安全性】里面


4.2 使用角色对用户授权
[Step1]: 授予role11角色查询权限


[Step2]: 创建测试用户test11

4.3 验证
[Step1]: 新建数据库连接



[Step2]: 在【数据库】中找到【test】数据库,点击【模式】,在【public】中找到student表,右键查询数据


5. 不同场景下的不同用户权限需求
[Step1]: 超级管理员,对整个实例拥有全部权限
create user super_user superuser;
[Step2]: 库级管理员,对整个数据库拥有全部权限
create user db_user; # 创建用户 db_user
create database db owner db_user; # 创建数据库db,指定所属主为db_user
[Step3]: 模式管理员,对指定模式拥有全部权限
create user sc_user;
create schema sc authorization sc_user; # 创建模式,指定模式管理员为sc_user
[Step4]: 有两种方式可以让用户加入角色
# 将现有用户加入角色
grant role_name to user_name;
# 新建用户时加入角色
create user user_name in role role_name;


















