• 沒有找到結果。

9.5.1 账号权限管理

DDM的权限管理系统参考MySQL的权限管理进行实现,DDM支持大部分的MySQL的 语法和权限类型。MySQL 账号和权限系统的详细信息请参见MySQL官方文档。

本文档主要介绍DDM账号规则、权限级别、权限项、以及权限操作。

说明

DDM里通过 CREATE USER或GRANT 语句创建出来的账号属于DDM的账号体系,与DDM后端 的RDS没有任何关系,也不会同步到后端的RDS 中去。

9.5.2 账号规则

账号

与MySQL不同,DDM只通过用户名确定一个账号,而不是通过'username'@'host'方 式来确定一个账号。

用户名规则

● 大小写敏感。

● 长度为1-32个字符,必须以字母开头,可以包含字母,数字、下划线,不能包含 其它特殊字符。

密码规则

● 长度为8~32个字符。

● 至少包含三种字符组合:大小写字母、数字、特殊字符`~!@#$%^&*()-_=+\\|

[{}];:'\"<.>/?和空格。

● 不能简单、强度不够、容易被猜测的弱口令。

9.5.3 权限管理

权限级别支持情况

● 用户层级(支持)

● 数据库层级(支持)

● 表层级(支持)

● 列层级(暂不支持)

● 子程序层级(暂不支持)

权限项

DDM通过GRANT语句授权所支持的权限项如下:

权限类型 权限简述

ALL 所有权限

Drop 删除 table

Index 创建/删除 index

Alter 执行 ALTER 语句

Create 创建 table

Select 读取表内容

Insert 插入数据到表

Update 更新表中数据

Grant 授予用户权限

Revoke 删除用户权限

Set SET用户密码权限

File 从文件加载数据库权限

Create User 创建用户

权限操作

须知

除show grants命令需要3.0.2及以上版本外,其他功能需要2.4.1.4及以上版本。

创建账号(CREATE USER)语句 语法规则:

CREATE USER username IDENTIFIED BY 'auth#string'

示例:创建一个名为Jenny,密码为Abc_123456。

CREATE USER Jenny IDENTIFIED BY 'Abc_123456';

说明

用户名和密码需要满足对应规则。

删除账号(DROP USER)语句 语法规则:

DROP USER username

示例:移除账号Jenny。

DROP USER Jenny;

修改账号密码(SET PASSWORD)语句 语法规则:

SET PASSWORD FOR 'username'@'%' = 'auth_string' 说明

为了兼容MySQL语法用户需要统一写成'username'@'%'格式。

示例:修改账号Jenny的密码为Abc_1234567

SET PASSWORD FOR 'Jenny'@'%' = 'Abc_1234567'

授权权限(GRANT)语句

说明

GRANT 语句里面的账号如果不存在,同时又没有提供 IDENTIFIED BY 信息,则报账号不存在异 常;如果提供了 IDENTIFIED BY 信息,则会创建该账号同时授权。

当前仅支持使用GRANT ALL [PRIVILEGES]语法授权表级所有权限,而不支持使用GRANT ALL [PRIVILEGES]语法授权用户级或库级所有权限。

示例1:创建一个用户级所有权限的账号。用户名为Mike。

方法1:先创建账号,再授权。

CREATE USER Mike IDENTIFIED BY 'your#password';

GRANT SELECT, INSERT ON *.* to Mike;

方法2:一条语句完成创建账号和授权两个操作。

GRANT SELECT, INSERT PRIVILEGES ON *.* to Mike IDENTIFIED BY 'your#password';

示例2:创建一个数据库级所有权限的账号。在数据库 testdb 下面,创建一个用户名 为 david,具有 testdb 数据库SELECT权限的账号。

方法1:先创建账号,再授权。

CREATE USER david IDENTIFIED BY 'your#password';

GRANT SELECT ON testdb.* to david;

方法2:一条语句完成创建账号和授权两个操作。

GRANT SELECT ON testdb.* to david IDENTIFIED BY 'your#password';

示例3:创建一个表级别所有权限的账号。在数据库 testdb 下面,创建一个用户名为 hanson,具有 testdb.employees 表所有权限的账号。

GRANT ALL PRIVILEGES ON testdb.employees to hanson IDENTIFIED BY 'your#password';

回收权限(REVOKE)语句 语法规则:

REVOKE

priv_type [, priv_type] ...

ON priv_level FROM user;

示例:删除 hanson在 testdb.emp 表的 CREATE、DROP、INDEX 权限。

REVOKE CREATE,DROP,INDEX ON testdb.emp FROM hanson;

说明

删除账号在某个权限级别下的权限项,具体权限级别由 priv_level 指定。

查看授权(SHOW GRANTS)语句 语法规则:

SHOW GRANTS FOR user;

示例1:查看当前用户权限可以使用以下三种方式之一:

SHOW GRANTS;

SHOW GRANTS FOR CURRENT_USER;

SHOW GRANTS FOR CURRENT_USER();

示例2:查看其他用户权限,只有当前用户具有用户级GRANT权限时才可使用此操 作。

mysql> show grants for david;

+---+

|Grants for david | +---+

|GRANT USAGE ON *.* TO david | +---+

1 row in set (0.00 sec)

10 备份管理