热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hive表级权限控制_数据库权限管理:表、行、列级别的权限控制

权限规则1.在配有主从集群时建议在主节点上做权限相关操作2.只有管理员和超级管理员才有将数据导入至表中的权限3.管理员用户赋予的是以整表为单位的权限,所有能赋予的权限

权限规则

1. 在配有主从集群时建议在主节点上做权限相关操作

2. 只有管理员和超级管理员才有将数据导入至表中的权限

3. 管理员用户赋予的是以整表为单位的权限,所有能赋予的权限为create/select/truncate/delete/drop

4. 管理员建表需要超管授权后才能创建,即使这张表不存在,直接创建也是没有权限的;管理员只具备create权限时,创建表后默认具备select权限,show tables需要的权限与select一致,但从create衍生而来的select权限不予以显示

5. 普通用户只能赋予select的权限,具体分为列级权限columns和行级权限rows,其中行级权限需要以列级权限为基准,行级权限是对列级权限更进一步的限制,即只有行级权限是查看不到表数据的

6. 管理员用户对普通用户赋权是在管理员用户所拥有的权限基础上对普通用户赋权

7. 管理员用户所有赋权均为追加操作,可先赋予一个权限,之后再赋予其他权限

8. 普通用户只有赋予行级权限rows时为覆盖操作(行级权限一次只可赋予一行权限),以最后一次赋权信息为最终行级权限信息,赋予列级权限columns时为追加操作(列级权限可以按列进行赋权)

9. 管理员用户可一次回收一个或多个或所有权限,但普通用户只能一次回收所有列的查询权限,而不能一列一列的回收权限

10. 回收不存在的权限时会显示成功,但实际没有需要回收的权限信息

11. 如果操作失误赋予了不符合要求的权限信息,可以基于revoke对比操作失误输入的信息进行回收,不符合要求的权限信息不会生效,但会予以显示

用户操作

1. 创建用户

操作指令中会举例说明SQL具体语法。

注:以下操作请保证在主节点(primary)进行操作,从节点(standby)会自动同步用户权限信息,如果在从节点操作,主节点在内存中的用户权限信息会与HDFS中文件保存的用户权限信息不一致,需要在主节点上重复操作。

用户一共分为三类:超级管理员、管理员以及普通用户。

a. 创建管理员

create admin user 用户名identified by ‘密码’;

create admin user rovisuk identified by ‘qwerty’;

b. 创建普通用户

create user 用户名 identified by '密码';

create user rktest identified by ‘qwerty’;

c. 删除用户,只有超级管理员有权限删除用户

所有类别用户均使用此语法,超级管理员无法删除

drop user 用户名;

drop user rovisuk;

drop user rktest;

以上操作需要在超管root使用beeline登录LSQL完成,创建管理员成功之后的JDBC连接就需要通过密码来访问了,例:

connection conn = DriverManager.getConnection("jdbc:hive2://master:10009/default", "rovisuk", "123456");

2. 查看用户权限

a. 查看当前所有用户,以及用户类别,所有用户类别均有权限查看

show users;

b. 查看某个用户当前所拥有的权限,所有用户类别均有权限查看,超管权限拥有最高级别权限,不予显示,没有的权限显示为NULL

show grant user 用户名;

#管理员显示包含表名以及对整表的权限

show grant user rovisuk;

#普通用户显示包含表名,列名和行的权限

show grant user rktest;

3. 修改密码

a. 每个用户都可以修改自己的密码,但只有超级管理员才能修改其他用户的密码

alter user 用户名 identified by ‘密码’;

alter user rovisuk identified by '123456';

alter user rktest identified by '123456';

赋权操作

1. 超级管理员

(1) 对管理员

a. 赋予一张或多张表或所有表的所有权限,具体权限信息查看权限规则

grant all[.*] table1[table1,table2,…,tableN][all][.*] to admin user 用户名;

grant all pri_tb1 to admin user rovisuk;

grant all pri_tb1,pri_tb2 to admin user rovisuk;

grant all all to admin user rovisuk;

b. 赋予以pri为前缀名的所有表所有权限,此处只能使用.*匹配

grant all pri.* to admin user 用户名;

c. 只赋予一张或多张表某个或多个权限

grant type1[type1,type2,…,typeN] table1[table1,table2,…,tableN] to admin user 用户名;

grant create[select][truncate][delete][drop] pri_tb1 to admin user rovisuk;

grant create,select[truncate][delete][drop] pri_tb1,pri_tb2 to admin user rovisuk;

(2) 对普通用户

a. 赋予一张表或多张表或所有表的一列或多列或所有列的查询权限,所有列省略写

grant select table1,table2,…,tableN[all] column1,column2,…,columnM[省略] to user rktest;

grant select pri_tb1 col1,col2 to user rktest;

grant select pri_tb1 to user rktest;

grant select all to user rktest;

b. 赋予一张表或多张表的某一行权限,注意,需要结合列级权限进行赋权,如果未赋予列级权限直接赋予行级权限,用户仍然查询不到数据

grant rows on table1,table2,…tableN to user rktest where 列名=值;

grant rows on pri_tb1,pri_tb2 to user rktest where col1=1;

2. 管理员

(1) 对普通用户

a. 创建用户

create user rk identified by '123456';

b. 赋予一张表或多张表,某列或多列中一行的权限

grant select all to user rk;

grant select table1,table2,…,tableN to user rk;

grant select table1 column1,column2,…,columnM to user rk;

grant select table1,table2,…,tableN column1,column2,…,columnM to user rk;

grant rows on pri_tb1 to user rk where col1=6;

回收权限

1. 超级管理员

(1) 对管理员

a. 回收一张表或多张表或所有表某个或多个或所有权限

revoke type1,type2,…,typeN[all][.*] table1,table2,…,tableN[all] from admin user rovisuk;

revoke all pri_tb1 from admin user rovisuk;

revoke create[select][truncate][delete][drop] pri_tb1 from admin user rovisuk;

revoke create,select pri_tb1,pri_tb2 from admin user rovisuk;

revoke all all from admin user rovisuk;

(2) 对普通用户

a. 回收所有表的查询权限

revoke select all from user 用户名;

b. 只回收一张表或多张表的查询权限,收回列级权限后,就无法再进行查询

revoke select table1,table2,…,tableN from user 用户名;

c. 只回收行级查询权限,保留列级查询权限

revoke rows on table1,table2,…tableN from user 用户名;

2. 管理员

管理员对普通用户的权限回收请参照超级管理员回收普通用户的指令。

LSQL提供超级管理员、管理员、普通用户三种权限,超级管理员拥有所有权限;支持表、行、列级别的权限控制,不同权限对应不同功能。

现在登陆LSQL官网:www.lucene.xin,还可以免费试用喔~

关注录信数软官方公众号,录信团队欢迎优秀的你!



推荐阅读
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • Hadoop 源码学习笔记(4)Hdfs 数据读写流程分析
    Hdfs的数据模型在对读写流程进行分析之前,我们需要先对Hdfs的数据模型有一个简单的认知。数据模型如上图所示,在NameNode中有一个唯一的FSDirectory类负责维护文件 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Flink使用java实现读取csv文件简单实例首先我们来看官方文档中给出的几种方法:首先我们来看官方文档中给出的几种方法:第一种:Da ... [详细]
  • 对于开源的东东,尤其是刚出来不久,我认为最好的学习方式就是能够看源代码和doc,測试它的样例为了方便查看源代码,关联导入源代 ... [详细]
author-avatar
草千里2502902931
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有