引言
完成数据库、表、索引这些核心对象的运作之后,'用户与权限控制'就成了保障 KingbaseES 数据安全的重点所在。通过细致的用户管理和权限分配,可以规避未授权访问以及误操作之类的风险,比如普通用户就无权删除核心表。本文针对'ksql 命令行操作用户与权限'展开论述,覆盖从'创建用户 - 查看用户 - 修改用户 - 授权/回收权限 - 删除用户'这样完整的流程,并结合真实的业务场景来分解具体的执行步骤,各个阶段均给出相关的语法、例子以及防止常见错误的提示,从而保证初学者能够掌握到安全控制的主要要点。
一、前置准备:明确'谁来操作'与'操作基础'
用户与权限运作属于'高危运作',要保证运作环境具备如下条件(结合前面内容,防止因为权限不够或者环境有误致使运作出现故障)。
1.1 用管理员账号连接数据库
管理员用户(比如预设的 system)具备创建、更改、删除其他用户的相关权限,普通用户并不具有这些权限,要经由 ksql 以管理员的身份去关联本地数据库。
# 连接默认数据库 kingbase,用户为 system
ksql -d kingbase -U system
连接创建之后,提示符变为 kingbase=#,其中,管理员的提示符是 #,普通用户的是 >,经由提示符能够立即识别出权限等级。
1.2 确认操作依赖的对象(衔接前文)
后续权限示例将基于前文创建的对象:
- 数据库:
kingbase(默认数据库)、test(前文创建的测试库); - 模式:
test_schema(前文创建的模式); - 表:
test_schema.sys_user(前文创建的用户表);
确保这些对象存在(可通过 \l 查数据库、\dn 查模式、\dt test_schema.* 查表),若不存在可参考前文重新创建,避免示例执行失败。
二、核心概念:用户与权限的'层级关系'
新手要先领会 KingbaseES 权限的'层级特性',即权限按'数据库 → 模式 → 表'由高到低分级,只有得到上层权限才可操作下层对象(若无数据库关联权限,则无法操作库中的表)。
KingbaseES 隐含的权限层级如下:
KingbaseES 存在隐含的权限层级,后面的全部权限操作都会环绕这三个层级来执行,以此保证权限分配达到'最小化'效果(也就是仅仅给予用户所需的权限,防止出现过度授权的情况)。
三、创建用户:基础用户管理第一步
创建用户属于权限管理的起始部分,要给出用户名、密码以及一些基本属性,比如默认数据库、密码有效期限等,接下来会阐述 CREATE USER 的关键语法,并且依照安全方面的良好做法来给出例子。
3.1 基础语法
CREATE USER 用户名 WITH PASSWORD '密码' [选项];
下面这些'选项'的解释(适合初学者了解):
PASSWORD '密码':用户登录密码(建议包含大小写、数字、特殊字符,避免弱密码);DEFAULT DATABASE 数据库名:指的是用户登录时默认关联的数据库,比如kingbase。DEFAULT SCHEMA:是指用户默认会用的模式,比如test_schema。CREATEDB:允许用户创建数据库(前文提到的建库权限,仅管理员可授予);INHERIT:用户自动继承所属角色的权限(默认开启,无需手动指定)。


