hhdb数据库介绍(9-16)

news/2024/11/29 11:05:06/文章来源:https://www.cnblogs.com/henghuixinda/p/18576147

SQL语法支持

事务管理与锁语句

语句类型 事务语句 语句参数 状态 说明
事务管理 START TRANSACTION 无参数 支持
WITH CONSISTENT SNAPSHOT 支持
READ WRITE 支持
READ ONLY 支持
BEGIN 支持
COMMIT 支持
COMMIT [AND [NO] CHAIN] [[NO] RELEASE] 支持
ROLLBACK 支持
ROLLBACK [AND [NO] CHAIN] [[NO] RELEASE] 支持
SET autocommit 0 1 支持
SAVEPOINT SAVEPOINT 支持
ROLLBACK ... TO ... 支持
RELEASE SAVEPOINT 支持
LOCK LOCK TABLES READ [LOCAL] 禁用
[LOW_PRIORITY] WRITE 禁用
UNLOCK TABLES 禁用
LOCK INSTANCE FOR BACKUP 禁用
UNLOCK INSTANCE 禁用
事务隔离级别语句 SET SESSION TRANSACTION REPEATABLE READ 支持 XA模式可完整支持, 普通模式下会存在读到部分提交的情况
READ COMMITTED 支持 普通模式下会存在读写不一致的问题; XA模式下支持,但跨库多次查询的情况下不保证读写强一致;即:对select 、insert select 这类SQL,如果出现一个SQL转成多个SQL执行的SQL语句,则SQL执行结果在该隔离级别下可能不正确。可参考数据强一致性(XA事务)章节章节描述
READ UNCOMMITTED 不支持
SERIALIZABLE 支持 XA模式可完整支持, 普通模式下会存在读到部分提交的情况
SET GLOBAL TRANSACTION REPEATABLE READ 不支持 不支持SET GLOBAL的方式,只支持SET SESSION
READ COMMITTED 不支持 不支持SET GLOBAL的方式,只支持SET SESSION
READ UNCOMMITTED 不支持
SERIALIZABLE 不支持
SET SESSION TRANSACTION READ ONLY 支持
READ WRITE 支持
SET GLOBAL TRANSACTION READ ONLY 不支持
READ WRITE 不支持
A事务 XA START BEGIN ... [JOIN RESUME]
XA END [SUSPEND [FOR MIGRATE]] 禁用
XA PREPARE 禁用
XA COMMIT [ONE PHASE] 禁用
XA ROLLBACK 禁用
XA RECOVER 禁用
XA RECOVER [CONVERT XID] 禁用 5.7新增参数

其他语句

存储过程、自定义函数等语句

计算节点当前仅支持垂直库(即逻辑库仅关联一个数据节点)场景下使用存储过程,自定义函数等语句。

语句类型 SQL语句 支持状态 说明
存储过程 BEGIN ... END ... 限制支持 垂直库下可使用,下同
DECLARE 限制支持
CASE 限制支持
IF 限制支持
ITRATE 限制支持
LEAVE 限制支持
LOOP 限制支持
REPEAT 限制支持
RETURN 限制支持
WHILE 限制支持
CURSOR 限制支持
DECLARE ... CONDITION... 限制支持
DECLARE ... HANDLER ... 限制支持
GET DIAGNOSTICS 限制支持
RESIGNAL 限制支持
SIGNAL 限制支持
插件和UDF语句 CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING |INTEGER|REAL| DECIMAL} SONAME shared_library_name 限制支持
DROP FUNCTION 限制支持
INSTALL PLUGIN 禁用
UNINSTALL PLUGIN 禁用

Prepare SQL Statement

语句类型 SQL语句 支持状态 说明
Prepare SQL Statement PREPARE ... FROM ... 支持
EXECUTE ... 支持
{DEALLOCATE | DROP} PREPARE 支持

用户管理语句

HHDB Server实现了一套自己的用户名与权限管理的系统,可以优先在关系集群数据库可视化管理平台页面上操作即可。若使用数据库用户管理类的SQL语句,部分可以支持。

语句类型 SQL语句 支持状态 说明
用户管理语句 ALTER USER 禁用 通过平台操作可支持
CREATE USER 支持 使用说明详见表格下方详细描述
DROP USER 支持 使用说明详见表格下方详细描述
GRANT 支持 使用说明详见表格下方详细描述
RENAME USER 禁用 通过平台操作可支持
REVOKE 支持 使用说明详见表格下方详细描述
SET PASSWORD 禁用 通过平台操作可支持

支持使用SQL语句创建/删除用户,并给用户赋权/解权。

创建用户

创建用户语法:

CREATE USER [IF NOT EXISTS] 'user_name'@'host_name'   IDENTIFIED BY  'password_auth_string'[,'user_name'@'host_name'   IDENTIFIED BY  'password_auth_string']...

服务端创建用户语法示例:

create user 'jingjingjing'@'%' identified by 'jing' with max_user_connections 3;

创建用户时执行用户必须具有super权限且不支持空密码创建,用户名最大长度限制64字符,密码暂未限制。

  • 执行用户不具有super权限创建用户,提示如下:

在这里插入图片描述

  • 空密码创建时,提示如下:

在这里插入图片描述

  • 用户名超过限制,提示如下:

在这里插入图片描述

  • 重复创建用户,提示如下:

在这里插入图片描述

删除用户

删除用户语法:

DROP USER [IF EXISTS] 'user_name'@'host_name' [,'user_name'@'host_name']...

服务端删除用户语法示例:

drop user 'jingjingjing'@'%';

删除用户时执行用户必须具有super权限。

  • 执行用户不具有super权限删除用户,提示如下:

在这里插入图片描述

  • 删除不存在的用户时,提示如下:

在这里插入图片描述

GRANT赋权

GRANT赋权语法:

GRANT
priv_type[, priv_type] ...
ON priv_level TO 'user_name'@'host_name'[,'user_name'@'host_name'] ...
[WITH MAX_USER_CONNECTIONS con_num]

提示
可授权的权限类型priv_type 包括:SELECT、 UPDATE、 DELETE、 INSERT 、CREATE 、DROP
、ALTER 、FILE 、 SUPER

可使用ALL [PRIVILEGES] 为用户赋予所有权限(包括SUPER权限)在内。

可授权的权限范围priv_level包括: * | . | db_name.* | db_name.tbl_name | tbl_name

  • *:表示当前数据库中的所有表(必须use 逻辑库之后才能执行);
  • *.*:表示所有数据库中的所有表/视图;
  • db_name.*:表示某个数据库中的所有表/视图,db_name 指定数据库名;
  • db_name.tbl_name:表示某个数据库中的某个表/视图,db_name 数据库名,tbl_name 表名;
  • tbl_name:表示某个表/视图,tbl_name 指定表名(必须use 逻辑库之后才能执行)

服务端GRANT语法示例:

全局权限:

grant all on *.* to ' test_ct '@'localhost' identified by ' test_ct ' with max_user_connections 3;

库级权限:

grant all on test_ct.* to 'test_ct'@'localhost' identified by 'test_ct';

表级/视图级权限:

grant update on test_ct.test_aa to 'test_ct'@'localhost' identified by 'test_ct';

赋权注意事项:

  1. 执行赋权操作的用户本身必须有super权限。
  2. 可在赋权时同步创建用户但需带上密码。
  3. super和file必须赋全局管理权限,不支持库和表级别授权。
  4. all权限不能与其他权限同时使用只能单独赋权。
  5. 权限修改后只对新连接生效,不会改变已创建的连接权限。
  • 执行赋权操作的用户不具有super权限,提示如下:

在这里插入图片描述

  • 赋权时同步创建用户

在这里插入图片描述

  • 赋权时同步创建用户不带密码,提示如下:

在这里插入图片描述

  • super只能赋全局权限,不支持库和表级别授权,如下图:

在这里插入图片描述

  • file权限只能赋全局权限,不支持库和表级别授权

在这里插入图片描述

  • all权限只能单独授权,不能和其他权限项同时授权

在这里插入图片描述
6. 使用GRANT语句修改用户密码时,必须注意,若修改的用户对象是Keepalived/LVS配置文件中的连接用户,必须同步修改Keepalived/LVS配置文件中对应的连接密码并加载配置,否则可能导致计算节点高可用切换异常、或者LVS流量分发异常等问题。另外,也需要同步修改管理平台连接计算节点的用户密码配置,否则会立即导致管理平台无法连接计算节点,进而无法监控、无法操作等问题。

REVOKE删除权限

REVOKE删除权限语法:

REVOKE priv_type [, priv_type] ...ON priv_level FROM 'user_name'@'host_name' [, 'user_name'@'host_name'] ...

服务端REVOKE语法示例:

revoke select,update,delete,insert,create,drop,alter,file,super on *.* from jingjing05;

解权注意事项:

  1. 执行删除权限操作的用户本身必须有super权限。
  2. 可以移除部分权限和所有权限,可以移除对应库、表级别的权限。
  3. 权限项可重复移除,但移除不存在的类型会报语法错误。
  4. 权限修改后只对新连接生效,不会改变已创建的连接权限。
  • 执行用户没有super权限时删除权限,提示如下:

在这里插入图片描述

  • 支持移除部分权限

在这里插入图片描述

  • 支持移除所有权限

在这里插入图片描述

  • 支持移除库级别权限

在这里插入图片描述

  • 支持移除表/视图级别权限

在这里插入图片描述

  • 移除权限后再次使用该权限,报错提示如下

在这里插入图片描述
在这里插入图片描述

角色管理语句

计算节点支持使用SQL语句进行ROLE角色的添加、赋权、删除等权限操作。ROLE角色是一个权限的集合,可以被赋予给多个用户进行用户权限的统一管理。

语句类型 SQL语句 支持状态 说明
角色管理语句 CREATE ROLE 支持 创建角色
DROP ROLE 支持 删除角色
GRANT 支持 赋予权限
REVOKE 支持 删除权限

创建角色

  1. 创建角色语法:
CREATE ROLE [IF NOT EXISTS] 'role_name'@'host_name' [,'role_name'@'host_name']...
  1. 语法示例:
CREATE ROLE 'web_writer', 'web_reader';
CREATE ROLE 'role01', 'role02';
CREATE ROLE 'role01'@'localhost';
  1. 语法说明:
  • role_name表示创建的角色名。
  • host_name表示主机名。在创建用户语法中,主机名的作用是指定用户访问逻辑库的IP地址;而在创建角色语法中,主机名并不表示IP地址,其意义类似于角色名,可以看作一种分类方式,其通过与角色名的多种排列组合以便对角色进行分类管理。 例如,当role_name均为admin,则允许存在多种admin角色,如admin@writer、admin@reader、admin@other等。当不指定主机名时,默认补充为%,则为admin@%。在ROLE定义中,%不具备通配符作用,只是表面上的符号意义,表示将未指定主机名的角色统一归类到%分类下。
  1. 注意事项:
  • 创建角色时执行用户必须有SUPER权限。当不具有SUPER权限的用户执行创建角色操作时,提示如下:

在这里插入图片描述

  • 重复创建角色,提示如下

在这里插入图片描述

删除角色

  1. 删除角色语法:
DROP ROLE [IF EXISTS] role [,role]...
  1. 语法示例:
DROP ROLE 'web_writer', 'web_reader';
  1. 注意事项:
  • 删除角色,则会从授予该角色的每个用户中删除它;
  • 删除角色时执行用户必须具有SUPER权限。当不具有SUPER权限的用户执行删除角色操作时,提示如下:

在这里插入图片描述

GRANT赋权

  1. 赋予角色权限

赋予角色权限语法:

GRANT priv_type [, priv_type ] ... ON  priv_level  TO 'role_name'@'host_name' [, 'role_name'@'host_name'] ...

语法示例:
库级别:

GRANT SELECT ON web_db.* TO 'role01';
--授权web_db库中所有表/视图的select权限给角色role01

表/视图级别:

GRANT SELECT, UPDATA, DELETE ON web_db.web_tbl TO 'role02';
--授权web_db库中web_tbl表/视图的select、update、delete权限给角色role02

全局级别:

GRANT ALL ON *.* TO 'role03';
--授权所有库中所有表/视图的全部权限给角色role3

语法说明:

  • 可授权的权限类型priv_type包括:SELECT、UPDATE、DELETE、INSERT、CREATE、DROP、ALTER、FILE、SUPER
  • 可授权的权限范围priv_level包括:|.|db_name.|db_name.tbl_name|tbl_name,具体说明如下:
Prive_level 说明 使用前提
* 表示当前数据库中的所有表/视图 必须选定逻辑库之后才能执行
. 表示所有数据库中的所有表/视图
db_name.* 表示某个数据库中的所有表/视图;db_name指定数据库名
db_name.tbl_name 表示某个数据库中的某张表;db_name指定数据库名、tbl_name指定表名/视图名
tbl_name 表示当前数据库中的某张表;tbl_name指定表名/视图名 必须选定逻辑库之后才能执行
  • 可使用ALL [PRIVILEGES] 为用户赋予所有权限(包括SUPER权限)在内。

在这里插入图片描述
注意事项:

  • 赋权时执行用户必须具有SUPER权限。当不具有SUPER权限的用户执行赋权操作时,提示如下:

在这里插入图片描述

  • 重复授权无报错,可以直接执行成功:

在这里插入图片描述

  1. 赋予角色权限给用户

赋予角色权限给数据库用户语法:

GRANT <ROLE> TO <USER>

语法示例:

GRANT role01 TO user01;
GRANT role01 TO user01, user02;
GRANT role01, role02 TO user03;
GRANT role01, role02 TO user01, user02, user03;

语法说明:
允许同时赋予多个用户多个权限。

注意事项:

  • 赋权时执行用户必须具有SUPER权限。当不具有SUPER权限的用户执行赋权操作时,提示如下:

在这里插入图片描述

  • 角色不能授予匿名用户,提示如下:

在这里插入图片描述

  • 用户和角色的权限有可互换性,角色权限可被赋予给用户,同理可将用户视为角色,并将该用户权限授予其他用户或角色:

在这里插入图片描述

REVOKE撤销权限

  1. 从角色中撤销权限

撤销角色权限语法:

REVOKE priv_type [, priv_type ] ...ON priv_level FROM 'role_name'@'host_name' [, 'role_name'@'host_name'] ...

语法示例:
撤销部分权限:

REVOKE SELECT, UPDATE ON test_database.* FROM role01;
-- 将赋予的test_database库中所有表/视图的SELECT、UPDATE权限从角色role01中移除

撤销所有权限:

REVOKE ALL ON test_database.* FRON role01;
-- 将赋予的test_database库中所有表/视图的全部权限从角色role01中移除

语法说明:

  • 可撤销的权限类型priv_type和范围priv_level同GRANT一致。支持移除库、表、全局级别的权限,支持移除全部权限和部分权限。
  • 可使用ALL [PRIVILEGES] 撤销所有权限(包括SUPER权限)在内。

在这里插入图片描述

注意事项:

  • 撤销角色中的权限,则被授予该角色的每个用户中的对应权限都会被撤销;
  • 撤销权限时执行用户必须具有SUPER权限。当不具有SUPER权限的用户执行撤权操作时,提示如下:

在这里插入图片描述

  1. 从用户中撤销角色

从数据库用户中撤销已赋予角色的语法:

REVOKE <ROLE> FROM <USER>

语法示例:

REVOKE role01 FROM user01;
REVOKE role01, role02 FROM user01;
REVOKE role01 FROM user01, user02;
REVOKE role01, role02 FROM user01, user02;

语法说明:
允许同时从多个用户中撤销多个角色

注意事项:
撤销角色时执行用户必须具有SUPER权限。当不具有SUPER权限的用户执行撤销角色操作时,提示如下:

查询角色权限

  1. 查询角色权限

查询角色权限语法:

SHOW GRANTS FOR <ROLE>;

语法示例:

SHOW GRANTS FOR role01;
-- 查看角色role01的权限mysql> show grants for role01;
+----------------------------------------------------------+
| Grants for role01@%                                          |
+----------------------------------------------------------+
| GRANT SELECT,INSERT ON 'TEST_DATABASE'.* TO 'role01'@'%'    |
| GRANT 'user01'@'%' TO 'role01'@'%'                               |
+----------------------------------------------------------+
1 row in set (0.01 sec)

语法说明:

  • 查询结果直接通过之前操作的赋权语句显示已配置给角色的权限,若分次配置了相同库表的权限,则会整合显示;
  • 查询结果显示顺序为,先显示单独配置的权限,再显示配置的ROLE权限(只显示赋予何种ROLE权限,不会具体到ROLE中有何权限)。

注意事项:
因为用户和角色的权限有可互换性,所以查询角色权限的语法与查询用户权限的语法相同。

  1. 查询用户权限关联角色权限

查询用户权限关联角色权限语法:

SHOW GRANTS FOR <USER> USING <ROLE>;

语法示例:

SHOW GRANTS FOR user01 USING role01;
-- 查看用户user01的权限,并细化到已赋权的角色role01内有何种权限

语法说明:
与查询角色权限语句不同的是,带USING的用户权限查询语句,除了显示单独配置给用户的权限和ROLE权限外,还会显示ROLE本身的权限集合;便于一次查询该角色下具体有何权限。

例如:赋予role01角色基于库表test_database.的select, insert权限;赋予user01用户基于库表test_database.的update权限;赋予role01角色基于库表zyftest.*的create权限;赋予user01用户role01的全部权限。完成上述权限赋予操作后,使用using role语句查看user01的权限,会尽数列举用户user01所拥有的全部权限(包含role01内的权限,且显示为赋予user01)

mysql> show grants for user01 using role01;
+----------------------------------------------------------+
| Grants for user01@%                                      |
+----------------------------------------------------------+
| GRANT SELECT,INSERT ON `TEST_DATABASE`.* TO `user01`@`%` |
| GRANT UPDATE ON `TEST_DATABASE`.* TO `user01`@`%`        |
| GRANT CREATE ON `ZYFTEST`.* TO `user01`@`%`         |    
| GRANT `role01`@`%` TO `user01`@`%`                       |
+----------------------------------------------------------+
3 rows in set (0.01 sec)

角色权限注意事项

  • Role 和 User 无本质区别
  • CREATE ROLE后, Role 状态为禁用,无法用于登录
  • CREATE\DROP\GRANT\REVOKE 都需要且只需要 SUPER 权限
  • Role 功能不需要关注存储节点版本
  • 表级别权限的Role,赋权给User后,在管理平台User表权限列表不显示该权限(User有相关表权限)
  • Role 创建时可以不指定密码,当解除该Role的禁用状态时,可以空密码登录,但无法在管理平台修改这个Role的密码
  • Role\User之间可以相互赋权
  • Role\User 无法赋权给自己

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/843331.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL_索引失效_类型转换

1.类型转换索引失效场景SELECT * FROM tbl_name WHERE str_col=1; 列str_col上有建立索引,一个字符串类型的列给一个整数类型的值。 问题:为什么会导致索引失效? 原因:MySQL官方文档解释:The reason for this is that there are many different strings that may convert …

Thinkpad X1 Tablet gen2 键盘改USB

0 写在前面 前文Thinkpad X1 Tablet gen2 键盘固件逆向实现Ctrl与Fn换位记录了Thinkpad X1 Tablet gen2 键盘Fn和Ctrl换位的研究过程,本文记录一下该键盘改USB的过程。因为操作的时候没有留太多照片,所以尽量画图示意。 0.1 其他网友硬改成果 在硬改该键盘之前,在网上发现其…

2024年不同行业都适用的10款项目管理工具推荐,总有一款适合你!

在当今快节奏的商业环境中,项目管理工具的选择对于项目的成功至关重要。不同的行业和项目类型需要不同的工具来满足其特定的需求。本文将介绍10款适用于不同行业的项目管理工具,帮助您在2024年找到最适合您项目的解决方案。 禅道项目管理软件 禅道项目管理软件是一款开源的项…

多模态遥感技术:智慧城市更新与表达的新路径

随着智慧城市建设的不断深入,多模态航空遥感技术正成为推动城市智慧化的关键力量。多模态航空遥感通过集成多种传感器和数据源,提供了丰富的地表信息,极大地提升了城市空间数据的准确性和应用价值。多模态航空遥感技术多模态航空遥感技术利用多种传感器,如全色相机、多光谱…

H5-9 表格

1、表格展示效果表格在数据展示方便面非常简单,并且表现优秀 2、表格组成与特点 行、列、单元格 单元格特点:通行等高、同列等宽。 3、表格标签表格:<table>行:<tr>列:<td> <table><tr><td>1</td><td>1</td>&l…

带CSS3动画效果的炫酷jquery返回顶部插件

gototop是一款轻量级、简单易用的jquery返回顶部插件。该jquery返回顶部插件在用户向下滚动页面一段距离之后,会以CSS3动画方式出现返回顶部按钮。点击返回顶部按钮之后,页面以平滑的方式滚动回顶部。在线演示 下载使用方法 在页面中引入jquery、jquery.gototop.min.js文件。…

基本分段存储管理方式

基本分段存储管理方式 前言:分段与分页基本类似,理解了分页此处不难 ​​ ‍一、分段 进程的地址空间:按照程序自身的逻辑关系划分为若干个段,每个段都有一个段名(在低级语言中,程序员使用段名来编程),每段从 0 开始编址。 内存分配规则:以段为单位进行分配,每个段在…

Java反序列化 - CC6链 (代码审计)

一、漏洞简述: 相比较于CC6链,CC1链对jdk版本有较多的限制。 在 jdk_8u71版本之后,AnnotationInvocationHandler类中的readObject方法代码被修改,移除了原有的 setValue()方法,导致利用链断开。 jdk_8u65:jdk_8u71:二、CC6链分析: 1、利用逻辑: Hashmap.readObject() …

不透明的文档协作,正在毁掉你的团队效率

在团队协作中,我们经常面对这样的困境:多人编辑同一份文档时,如何确保内容的准确性和版本的一致性?这看似简单的问题,却常常导致效率低下、信息丢失,甚至团队内部的矛盾升级。 关键点在于“变更透明化与实时同步”。 传统方式依赖邮件传输或者分散的云存储,这不仅容易造…

工地渣土车AI智能识别管控系统

工地渣土车AI智能识别管控系统通过现场监控摄像头实时捕捉工地出入口的画面,工地渣土车AI智能识别管控系统能够准确识别出渣土车,判断其是否按规定进行了遮盖,一旦系统判定渣土车未按规定遮盖,立即触发警报并抓拍照片,能够及时将违规行为报告发送至企业平台。工地渣土车AI…

马尔科夫模型

马尔科夫模型(Markov Model) 是一种用于描述系统状态转移的概率模型,广泛应用于统计学、机器学习、自然语言处理、物理学等领域。它的核心假设是:未来的状态仅依赖于当前状态,而与过去的历史状态无关,这个假设被称为“马尔科夫性”或“无记忆性”。1. 马尔科夫过程 马尔科…

20222412 2024-2025-1 《网络与系统攻防技术》实验五实验报告

20222412 2024-2025-1 《网络与系统攻防技术》实验五实验报告 1.实验内容 (1)从besti.edu.cn、baidu.com、sina.com.cn中选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式该域名对应IP地址IP地址注册人及联系方式IP地址所在国家、城市和具体地理位置 PS:使用who…