热门标签 | 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,还可以免费试用喔~

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



推荐阅读
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • 本文介绍了在解决Hive表中复杂数据结构平铺化问题后,如何通过创建视图来准确计算广告日志的曝光PV,特别是针对用户对应多个标签的情况。同时,详细探讨了UDF的使用方法及其在实际项目中的应用。 ... [详细]
  • SQLite是一种轻量级的关系型数据库管理系统,尽管体积小巧,却能支持高达2TB的数据库容量,每个数据库以单个文件形式存储。本文将详细介绍SQLite在Android开发中的应用,包括其数据存储机制、事务处理方式及数据类型的动态特性。 ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • 设计模式系列-原型模式
    一、上篇回顾上篇创建者模式中,我们主要讲述了创建者的几类实现方案,和创建者模式的应用的场景和特点,创建者模式适合创建复杂的对象,并且这些对象的每个组成部分的详细创建步骤可以是动态的变化的,但 ... [详细]
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • 本文介绍了多种将多行数据合并为单行的方法,包括使用动态SQL、函数、CTE等技术,适用于不同的SQL Server版本。 ... [详细]
  • 本文介绍了多种Eclipse插件,包括XML Schema Infoset Model (XSD)、Graphical Editing Framework (GEF)、Eclipse Modeling Framework (EMF)等,涵盖了从Web开发到图形界面编辑的多个方面。 ... [详细]
  • 深入浅出:Hadoop架构详解
    Hadoop作为大数据处理的核心技术,包含了一系列组件如HDFS(分布式文件系统)、YARN(资源管理框架)和MapReduce(并行计算模型)。本文将通过实例解析Hadoop的工作原理及其优势。 ... [详细]
  • 本文详细介绍了在 Windows 7 上安装和配置 PHP 5.4 的 Memcached 分布式缓存系统的方法,旨在减少数据库的频繁访问,提高应用程序的响应速度。 ... [详细]
  • SQL 数据恢复技巧:利用快照实现高效恢复
    本文详细介绍了如何在 SQL 中通过数据库快照实现数据恢复,包括快照的创建、使用及恢复过程,旨在帮助读者深入了解这一技术并有效应用于实际场景。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 深入解析 RuntimeClass 及多容器运行时应用
    本文旨在探讨RuntimeClass的起源、功能及其在多容器运行时环境中的实际应用。通过详细的案例分析,帮助读者理解如何在Kubernetes集群中高效管理不同类型的容器运行时。 ... [详细]
  • Hadoop MapReduce 实战案例:手机流量使用统计分析
    本文通过一个具体的Hadoop MapReduce案例,详细介绍了如何利用MapReduce框架来统计和分析手机用户的流量使用情况,包括上行和下行流量的计算以及总流量的汇总。 ... [详细]
  • 数据输入验证与控件绑定方法
    本文提供了多种数据输入验证函数及控件绑定方法的实现代码,包括电话号码、数字、传真、邮政编码、电子邮件和网址的验证,以及报表绑定和自动编号等功能。 ... [详细]
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社区 版权所有