hive 创建访问用户_hive创建角色并赋权

1 角色管理命令

1.1 创建角色

创建一个新角色,需要 admin 用户执行

CREATE ROLE role_name;

1.2 删除角色

删除一个角色,需要 admin 用户执行

DROP ROLE role_name;

1.3 显示当前角色

显示用户当前角色列表

SHOW CURRENT ROLES;

1.4 设定角色

如果指定了role_name,则该角色将成为当前角色中的唯一角色

将Role_Name设置为All将刷新当前角色的列表(在新角色被授予用户的情况下),并将其设置为默认的角色列表。

将Role_Name设置为None将从当前用户中删除所有当前角色。

SET ROLE (role_name|ALL|NONE);

1.5 显示角色

列出所有当前存在的角色。

只有admin角色对此有特权。

SHOW ROLES;

1.6 赋权/撤销语法

第一种

将一个或多个角色授予其他角色或用户。

如果指定了“WITH ADMIN OPTION”,则用户将获得将该角色授予其他用户/角色的权限。

如果授予语句最终在角色之间创建循环关系,则该命令将失败并出现错误。

GRANT role_name [, role_name] ...

TO principal_specification [, principal_specification] ...

[ WITH ADMIN OPTION ];

principal_specification

: USER user

| ROLE role

从FROM子句中的用户/角色中撤消角色的成员权限。

REVOKE [ADMIN OPTION FOR] role_name [, role_name] ...

FROM principal_specification [, principal_specification] ... ;

principal_specification

: USER user

| ROLE role

第二种

GRANT ROLE role_name [, role_name] ...

TO principal_specification [, principal_specification] ...

[WITH ADMIN OPTION]

REVOKE [ADMIN OPTION FOR] ROLE role_name [, role_name] ...

FROM principal_specification [, principal_specification] ...

principal_specification:

USER user

| GROUP group

| ROLE role

1.7 显示角色授予

principal_name是用户或角色的名称。

列出已授予给定用户或角色的所有角色。

SHOW ROLE GRANT (USER|ROLE|GROUP ) principal_name;

示例:

0: jdbc:hive2://localhost:10000> SHOW ROLE GRANT USER user1;

+---------+---------------+----------------+----------+

| role | grant_option | grant_time | grantor |

+---------+---------------+----------------+----------+

| public | false | 0 | |

| role1 | false | 1398284083000 | uadmin |

+---------+---------------+----------------+----------+

1.8 列出所有角色和属于该角色的用户

仅admin角色对此具有特权。

SHOW PRINCIPALS role_name;

示例:

0: jdbc:hive2://localhost:10000> SHOW PRINCIPALS role1;

+-----------------+-----------------+---------------+----------+---------------+----------------+

| principal_name | principal_type | grant_option | grantor | grantor_type | grant_time |

+-----------------+-----------------+---------------+----------+---------------+----------------+

| role2 | ROLE | false | uadmin | USER | 1398285926000 |

| role3 | ROLE | true | uadmin | USER | 1398285946000 |

| user1 | USER | false | uadmin | USER | 1398285977000 |

+-----------------+-----------------+---------------+----------+---------------+----------------+

2 权限管理

2.1 赋权和移除权限

对表或视图赋权/撤销授权

GRANT

priv_type [, priv_type ] ...

ON table_or_view_name

TO principal_specification [, principal_specification] ...

[WITH GRANT OPTION];

REVOKE [GRANT OPTION FOR]

priv_type [, priv_type ] ...

ON table_or_view_name

FROM principal_specification [, principal_specification] ... ;

principal_specification

: USER user

| ROLE role

priv_type

: INSERT | SELECT | UPDATE | DELETE | ALL

对列赋权/撤销授权

GRANT

priv_type [(column_list)]

[, priv_type [(column_list)]] ...

[ON object_specification]

TO principal_specification [, principal_specification] ...

[WITH GRANT OPTION]

REVOKE [GRANT OPTION FOR]

priv_type [(column_list)]

[, priv_type [(column_list)]] ...

[ON object_specification]

FROM principal_specification [, principal_specification] ...

REVOKE ALL PRIVILEGES, GRANT OPTION

FROM user [, user] ...

priv_type:

ALL | ALTER | UPDATE | CREATE | DROP

| INDEX | LOCK | SELECT | SHOW_DATABASE

object_specification:

TABLE tbl_name

| DATABASE db_name

principal_specification:

USER user

| GROUP group

| ROLE role

如果授予用户对表或视图的WITH GRANT OPTION特权,则该用户还可以赋权/撤消其他用户的特权以及这些对象上的角色。

示例:

0: jdbc:hive2://localhost:10000/default> grant select on table secured_table to role my_role;

No rows affected (0.046 seconds)

0: jdbc:hive2://localhost:10000/default> revoke update, select on table secured_table from role my_role;

No rows affected (0.028 seconds)

2.2 显示权限

SHOW GRANT [principal_specification] ON (ALL | [TABLE] table_or_view_name);

principal_specification

: USER user

| ROLE role

2.3 管理对象权限的示例

2.3.1 创建角色,并将指定数据库所有/只读权限赋给该角色

--创建名为bigdata_admin_role的角色

CREATE ROLE bigdata_admin_role;

--将数据库bigdata_db的所有权限赋给bigdata_admin_role角色

GRANT ALL ON DATABASE bigdata_db TO ROLE bigdata_admin_role;

--将集群路径所有权限赋权给bigdata_admin_role角色

GRANT ALL ON URI 'hdfs://nameservice/user/bigdata' TO bigdata_admin_role;

--将bigdata_admin_role角色的权限给到bigdata_g组

GRANT ROLE bigdata_admin_role TO GROUP bigdata_g;

--至此,bigdata_g 组下的所有用户拥有了操作bigdata_db库的所有权限

--创建名为bigdata_read_role的角色,该角色只有只读权限

CREATE ROLE bigdata_read_role;

--将数据库bigdata_db的select权限赋给bigdata_read_role角色

GRANT SELECT ON DATABASE bigdata_db TO ROLE bigdata_read_role;

--将集群路径所有权限赋权给bigdata_admin_role角色

GRANT ALL ON URI 'hdfs://nameservice/user/bigdata' TO bigdata_read_role;

--将bigdata_admin_role角色的权限给到bigdata_g组

GRANT ROLE bigdata_read_role TO GROUP bigdata_g;

--至此,bigdata_g 组下的所有用户拥有了操作bigdata_db库的读权限

--创建一个用户组hive_g,并给该角色赋权查询bigdata_db.test_tb的权限

CREATE ROLE hive_read_role;

GRANT ROLE hive_read_role TO GROUP hive_g;

GRANT SELECT ON TABLE bigdata_db.test_tb TO ROLE hive_read_role;

找出用户ashutosh对表hivejiratable拥有的特权:

0: jdbc:hive2://localhost:10000> show grant user ashutosh on table hivejiratable;

+-----------+----------------+------------+---------+-----------------+-----------------+------------+---------------+----------------+----------+

| database | table | partition | column | principal_name | principal_type | privilege | grant_option | grant_time | grantor |

+-----------+----------------+------------+---------+-----------------+-----------------+------------+---------------+----------------+----------+

| default | hivejiratable | | | ashutosh | USER | DELETE | false | 1398303419000 | thejas |

| default | hivejiratable | | | ashutosh | USER | SELECT | false | 1398303407000 | thejas |

+-----------+----------------+------------+---------+-----------------+-----------------+------------+---------------+----------------+----------+

找出用户ashutosh对所有对象具有的特权:

0: jdbc:hive2://localhost:10000> show grant user ashutosh on all;

+-----------+-------------------+------------+---------+-----------------+-----------------+------------+---------------+----------------+----------+

| database | table | partition | column | principal_name | principal_type | privilege | grant_option | grant_time | grantor |

+-----------+-------------------+------------+---------+-----------------+-----------------+------------+---------------+----------------+----------+

| default | hivecontributors | | | ashutosh | USER | DELETE | false | 1398303576000 | thejas |

| default | hivecontributors | | | ashutosh | USER | INSERT | false | 1398303576000 | thejas |

| default | hivecontributors | | | ashutosh | USER | SELECT | false | 1398303576000 | thejas |

| default | hivejiratable | | | ashutosh | USER | DELETE | false | 1398303419000 | thejas |

| default | hivejiratable | | | ashutosh | USER | SELECT | false | 1398303407000 | thejas |

+-----------+-------------------+------------+---------+-----------------+-----------------+------------+---------------+----------------+----------+

找出所有用户对表hivejiratable拥有的特权:

0: jdbc:hive2://localhost:10000> show grant on table hivejiratable;

+-----------+----------------+------------+---------+-----------------+-----------------+------------+---------------+----------------+----------+

| database | table | partition | column | principal_name | principal_type | privilege | grant_option | grant_time | grantor |

+-----------+----------------+------------+---------+-----------------+-----------------+------------+---------------+----------------+----------+

| default | hivejiratable | | | ashutosh | USER | DELETE | false | 1398303419000 | thejas |

| default | hivejiratable | | | ashutosh | USER | SELECT | false | 1398303407000 | thejas |

| default | hivejiratable | | | navis | USER | INSERT | false | 1398303650000 | thejas |

| default | hivejiratable | | | navis | USER | SELECT | false | 1398303650000 | thejas |

| default | hivejiratable | | | public | ROLE | SELECT | false | 1398303481000 | thejas |

| default | hivejiratable | | | thejas | USER | DELETE | true | 1398303380000 | thejas |

| default | hivejiratable | | | thejas | USER | INSERT | true | 1398303380000 | thejas |

| default | hivejiratable | | | thejas | USER | SELECT | true | 1398303380000 | thejas |

| default | hivejiratable | | | thejas | USER | UPDATE | true | 1398303380000 | thejas |

+-----------+----------------+------------+---------+-----------------+-----------------+------------+---------------+----------------+----------+

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

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

相关文章

python 正则替换_5分钟速览Python正则表达式常用函数!五分钟就掌握它!

导读:正则表达式是处理字符串类型的"核武器",不仅速度快,而且功能强大。本文不过多展开正则表达式相关语法,仅简要介绍python中正则表达式常用函数及其使用方法,以作快速查询浏览。01 Re概览Re模块是python的…

MFC鼠标OnMouseHover使用

ON_WM_MOUSEHOVER消息要生效,要配合ON_WM_MOUSEMOVE一起使用.代码如下:void CYuButton::OnMouseMove(UINT nFlags, CPoint point) {// TODO: 在此添加消息处理程序代码和/或调用默认值TRACKMOUSEEVENT tme { 0 };tme.cbSize sizeof(TRACKMOUSEEVENT);tme.dwFlags TME_HOVER…

oracle 分组_大数据分组怎样才会更快

分组是数据库的常见运算,无论数据如何准备,通常都需要将所有数据遍历。建立索引这时是不起作用的,存储格式才是决定遍历效率的主要因素。数据库中数据的存放虽然是二进制格式的,但普遍IO性能差,库内遍历快,…

java下拉树_参数模板中下拉树级联下拉数据集查询

背景说明在参数表单的制作中会遇到各种各样的需求,如为了方便参数的输入,需要将输入框设计成树状;若参数模板中有两个输入框,每个输入框对应的参数有某种关系,前一个输入框输入参数后,后一个输入框自动关联…

java8 list 行转列_太赞了,Intellij IDEA 竟然把 Java8 的数据流问题这么完美的解决掉了!

使用 IntelliJ IDEA 来帮忙构建你自己的实时模板连接分组《Java 2019 超神之路》《Dubbo 实现原理与源码解析 —— 精品合集》《Spring 实现原理与源码解析 —— 精品合集》《MyBatis 实现原理与源码解析 —— 精品合集》《Spring MVC 实现原理与源码解析 —— 精品合集》《Spr…

线程run方法和start方法的区别

区别 run() 只是一个普通的方法调用,不会开启新的线程。 start() 会开启新的线程,分配新的资源。里面的变量互不影响。 实例 package multithreading;public class MyThread extends Thread {String flag;public MyThread(String flag) {this.flag…

字典的拼接方法

刚看到觉得很简单 试着用 d3 dict1 dict2 就解决了 结果 报类型错误 后来想去遍历 在组合越想越麻烦 下面分享几个方法 d1 {"name":"luoyong","age":36}d2 {"class":"AID1712","start":"python"}方…

python反射、闭包、装饰器_python 闭包装饰器(一)

一、闭包1.举例defouter():x 10def inner(): #内部函数print(x) #外部函数的一个变量returninner#调用inner()函数的方法outer()() #法一fouter()f()#法二注意:inner()是局部变量,在全局范围不可调用(即不能直接调用inner()函数),但是在法二中…

java list集合自定义排序_Java 通过 Comparator comparing 对 list 自定义 排序

摘要:在日常开发中,经常会用到排序算法,这里记录下日常使用比较多的排序方法,其中包括按指定指定:正序、倒序排序,还有按自定义字段排序的方法,方便日后查看;一:按指定字…

beautifulsoup爬取网页中的表格_用 Python 爬取网页

来自公众号:优达学城Udacity作者:Kerry Parker编译:欧剃作为数据科学家的第一个任务,就是做网页爬取。那时候,我对使用代码从网站上获取数据这项技术完全一无所知,它偏偏又是最有逻辑性并且最容易获得的数据…

Java中Runnable和Thread的区别

概述 Runnable 是接口。 Thread 是类,且实现了Runnable接口。 Thread部分源码 public class Threadimplements Runnable {private static class Caches{static final ConcurrentMap subclassAudits new ConcurrentHashMap();static final ReferenceQueue subcla…

python 神经网络工具_神经网络15分钟入门!使用python从零开始写一个两层神经网络...

本篇是该系列的第三篇,建议在阅读本篇文章之前先看前两篇文章。在本文中将使用python实现之前描述的两层神经网络,并完成所提出的“象限分类”的问题。需要注意的是,虽然标题叫做神经网络15分钟入门,但是到这篇文章,对…

12.3目录结构

目录结构 设计好目录结构 可读性高可维护性高比如一个Foo项目Foo/--- bin/--- foo--- foo/--- tests/--- _init__.py--- test_main.py--- init.py--- main.py---doc--- conf.py---abc.rst--- setup.py--- requirement.txt--- README简要解释一下: bin/:存放项目的一…

pyecharts添加文字_超燃的文字云效果,用Python就能轻松get!

本文转载自公众号:数据森麟(ID:shujusenlin)作者:叶庭云链接:https://blog.csdn.net/fyfugoyfa/ 01 / 词云图词云图是一种用来展现高频关键词的可视化表达,通过文字、色彩、图形的搭配,产生有冲击力地视觉效…

同步关键词synchronized

概述 synchronized是java中的一个关键字,也就是说是Java语言内置的特性。 synchronized( 一个任意的对象(锁) ){ 代码块中放操作共享数据的代码。 } public synchronized int getIndex() {return 1;}public static synchronized int getN…

python连接mysql用哪个模块_Python连接MySQL数据库之pymysql模块使用

Python3连接MySQL本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用。PyMySQL介绍PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。Django中也可以使用PyMySQL连接MySQL数据库。PyMySQL安装pip install pymysql连接数据…

mysql 创建视图 主键_MySQL数据库基础操作命令,本文助你更上一层楼!

今天介绍的是关于Mysql数据库一些操作的基础命令用户与权限创建用户mysql>create user test identified by BaC321#; 修改密码5.5版本及以前的命令mysql>set password for testpassowrd(!1A2#3); 5.6及以上命令mysql>update mysql.user set authentication_stringpass…

mysql 聚合函数 怎么用在条件里_MySql 中聚合函数增加条件表达式的方法

Mysql 与聚合函数在一起时候where条件和having条件的过滤时机where 在聚合之前过滤当一个查询包含了聚合函数及where条件&#xff0c;像这样的情况select max(cid) from t where t.id<999这时候会先进行过滤&#xff0c;然后再聚合。先过滤出ID《999的记录&#xff0c;再查找…

drbd(三):drbd的状态说明

1.几种获取状态信息的方法 drbd有很多获取信息的方式。在drbd84和之前的版本&#xff0c;大多都使用cat /proc/drbd来获取信息&#xff0c;多数情况下&#xff0c;这个文件展示的信息对于管理和维护drbd来说已经足够。 例如以下是drbd84上两个volume的节点状态信息&#xff1a;…

Lock的lock()方法

ReentrantLock是JDK唯一实现了Lock接口的类 lock() 是平常使用得最多的一个方法&#xff0c;就是用来获取锁。如果锁已被其他线程获取&#xff0c;则进行等待。 由于在前面讲到如果采用Lock&#xff0c;必须主动去释放锁&#xff0c;并且在发生异常时&#xff0c;不会自动释放锁…