人大金仓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;