权限控制 #
权限配置 #
适用场景
权限引擎根据 server.yaml 中配置的权限规则来执行系统的初始化工作。
数据规划
- users 用于指定初始用户,如这里将 root@% 设置为初始用户;
- privilege 中的 type 用于指定选用的服务提供者,如这里配置了企业级的权限提供者
SphereEx:PERMITTED
。
注意事项
- 初始用户默认具备 SUPER 权限。
- 若通过 DistSQL 对初始用户显示赋予非 SUPER 权限,则该初始用户将失去 SUPER 授权。
- 需再次赋予 SUPER 授权,需要使用
GRANT DIST SUPER TO user
语句。
操作步骤
配置格式如下:
authority:
users:
- user: root@%
password: root
privilege:
type: SphereEx:PERMITTED
不使用角色管理 #
适用场景
某应用系统为开发和运维人员提供了不同级别的 DBPlusEngine 账户,其中开发人员仅可以执行 DML 指令,运维人员则可以执行 DML + DDL 指令,另有一个 root 用户作为最高管理者。
数据规划
全部账号需求如下:
用户名 | 使用人员 | 所需权限 |
---|---|---|
root | 最高管理员 | SUPER |
zhangsan | 开发-张三 | DML |
wangwu | 开发-王五 | DML |
develop_test | 开发测试 | DML |
operator_1 | 运维人员-1 | DML + DDL |
operator_2 | 运维人员-2 | DML + DDL |
其中,root 用户为初始用户。
操作步骤
- 依次创建各个开发和运维用户,密码根据实际情况进行设置。
-- 不限制登录主机,省略 host 配置
CREATE DIST USER zhangsan IDENTIFIED BY '123456';
CREATE DIST USER wangwu IDENTIFIED BY '123456';
CREATE DIST USER develop_test IDENTIFIED BY '123456';
CREATE DIST USER operator_1 IDENTIFIED BY '123456';
CREATE DIST USER operator_2 IDENTIFIED BY '123456';
- 为开发用户授权。
GRANT DIST INSERT,SELECT,UPDATE,DELETE TO zhangsan;
GRANT DIST INSERT,SELECT,UPDATE,DELETE TO wangwu;
GRANT DIST INSERT,SELECT,UPDATE,DELETE TO develop_test;
- 为运维用户授权。
GRANT DIST INSERT,SELECT,UPDATE,DELETE,CREATE,ALTER,DROP,TRUNCATE TO operator_1;
GRANT DIST INSERT,SELECT,UPDATE,DELETE,CREATE,ALTER,DROP,TRUNCATE TO operator_2;
- 若需新增开发用户,则重复以下两步。
-- 新建用户
CREATE DIST USER new_developer IDENTIFIED BY '123456';
-- 授权
GRANT DIST INSERT,SELECT,UPDATE,DELETE TO new_developer;
- 若需新增运维用户,则重复以下两步。
-- 新建用户
CREATE DIST USER new_operator IDENTIFIED BY '123456';
-- 授权
GRANT DIST INSERT,SELECT,UPDATE,DELETE,CREATE,ALTER,DROP,TRUNCATE TO new_operator;
使用角色管理 #
适用场景
某应用系统为开发和运维人员提供了不同级别的 DBPlusEngine 账户,其中开发人员仅可以执行 DML 指令,运维人员则可以执行 DML + DDL 指令,另有一个 root 用户作为最高管理者。
数据规划
全部账号需求如下:
用户名 | 使用人员 | 所需权限 |
---|---|---|
root | 最高管理员 | SUPER |
zhangsan | 开发-张三 | DML |
wangwu | 开发-王五 | DML |
develop_test | 开发测试 | DML |
operator_1 | 运维人员-1 | DML + DDL |
operator_2 | 运维人员-2 | DML + DDL |
操作步骤
- 依次创建各个开发和运维用户,密码根据实际情况进行设置。
-- 不限制登录主机,省略 host 配置
CREATE DIST USER zhangsan IDENTIFIED BY '123456';
CREATE DIST USER wangwu IDENTIFIED BY '123456';
CREATE DIST USER develop_test IDENTIFIED BY '123456';
CREATE DIST USER operator_1 IDENTIFIED BY '123456';
CREATE DIST USER operator_2 IDENTIFIED BY '123456';
- 创建两个角色,develop_dml 和 operate_ddl。
CREATE DIST ROLE develop_dml;
CREATE DIST ROLE operate_ddl;
- 为角色授权。
GRANT DIST INSERT,SELECT,UPDATE,DELETE TO develop_dml;
GRANT DIST INSERT,SELECT,UPDATE,DELETE,CREATE,ALTER,DROP,TRUNCATE TO operate_ddl;
- 将开发角色赋予用户,这样用户就具有了角色所拥有的权限。
GRANT DIST develop_dml TO zhangsan;
GRANT DIST develop_dml TO wangwu;
GRANT DIST develop_dml TO develop_test;
- 为运维角色赋予用户。
GRANT DIST operate_ddl TO operator_1;
GRANT DIST operate_ddl TO operator_2;
- 若需新增开发用户,则重复以下两步。
-- 新建用户
CREATE DIST USER new_developer IDENTIFIED BY '123456';
-- 授权
GRANT DIST develop_dml TO new_developer;
- 若需新增运维用户,则重复以下两步。
-- 新建用户
CREATE DIST USER new_operator IDENTIFIED BY '123456';
-- 授权
GRANT DIST operate_ddl TO new_operator;