CDH 给root 用户赋值 超级权限 和 hive 赋值操作 详细

cdh 中给root 赋值 hdfs 超级用户权限

CDH环境下Hadoop平台最高权限用户是hdfs,属于supergroup组。默认HDFS会开启权限认证,所以操作时,需要将root用户切换到hdfs用户,否则会报错。

在这里插入图片描述

在root 用户下
spark-shell 和hdfs 等命令没有读写 hdfs 系统上数据的权限 每次都切换到 hdfs 用户下执行存在问题,还有在特定单独安装组件可能要求用root用户存在进程无法读取hdfs 上数据的情况,但是关闭权限检查,任何用户都可以操作HDFS数据,数据安全性又没有保障,所以使用将用户添加到supergroup组的方式。

通常会把 root 或者需要的用户添加到 supergroup组,但Linux下默认是没有supergroup组。

#Linux下默认是没有supergroup组的
#hadoop:x:994:hdfs,mapred,yarn
cat /etc/group
 
#查看hdfs用户的组是hadoop
#hdfs:x:995:992:Hadoop HDFS:/var/lib/hadoop-hdfs:/sbin/nologin
cat /etc/passwd

所以,先在Linux添加supergroup组,把root用户添加到supergroup里,再同步权限到HDFS。

#Linux添加supergroup组
#supergroup:x:1003:
groupadd supergroup
 
#将root添加到supergroup
#supergroup:x:1003:root
usermod -a -G supergroup root
 
#同步系统权限信息到HDFS,会自动同步其他节点权限
#Refresh user to groups mapping successful for cdh-master/192.168.100.45:8020
#Refresh user to groups mapping successful for cdh-slave01/192.168.100.46:8020

然后再 hdfs 用户下同步 到其它节点

hdfs dfsadmin -refreshUserToGroupsMappings

最后验证

hive 中为用户(root)添加 所有权限

确保cdh 中已经配置开通相应的权限控制
在Cloudera Manager中配置

hive-site.xml 的 Hive 客户端高级配置代码段(安全阀)
hive-site.xml 的 HiveServer2 高级配置代码段(安全阀)

hive.security.authorization.enabled true hive.security.authorization.createtable.owner.grants ALL hive.security.authorization.task.factory org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl ![在这里插入图片描述](https://img-blog.csdnimg.cn/20191203191658276.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDgwOTYyNw==,size_16,color_FFFFFF,t_70) 更多优化参数参考:https://www.cnblogs.com/yaohaitao/p/5799495.html

本人任务为root用户增加权限的最好方式是通过hive 客户端直接赋值所有权限(待验证 欢迎推荐其它方式)
切换到超级用户hdfs 直接客户端 方式 hive

grant all to user root:
在这里插入图片描述

hive中查看用户权限

在这里插入图片描述
此时root 已经拥有 hive 操作的所有权限

注意:
‘hive 用户权限分配 一般可以通过两方面
1、直接对不同的用户赋权。
2、通过对hive中的角色赋权(一般可以通过hue)
hue 一般先赋值操作到一个角色 然后将这个角色的权限 在赋值个用户的方式。

如:(1)\hue 这里创建了角色 role_select
CREATE ROLE role_select;
grant SELECT,SHOW_DATABASE on database default to role role_select;

(2)、hue 中使用超级用户(hdfs)

  • 在Manager Users选项下 Add User, 逐步创建用户
  • 登录到hive,执行授权
    grant role role_select to user [替换user为具体用户]

完成

应用hive2的beeline命令行工具登录到hive后:

我们直接可以对相关用户和角色添加相关权限 create,drop ,select,alter,delete等

操作(opera) 解释

ALL             所有权限  
ALTER           允许修改元数据(modify metadata data of  object)---表信息数据  
UPDATE          允许修改物理数据(modify physical data of  object)---实际数据  
CREATE          允许进行Create操作  
DROP            允许进行DROP操作  
INDEX           允许建索引(目前还没有实现)  
LOCK            当出现并发的使用允许用户进行LOCK和UNLOCK操作  
SELECT          允许用户进行SELECT操作  
SHOW_DATABASE   允许用户查看可用的数据库

一般情况下的操作是 将权限归类 按照合适的粒度 分配给角色 然后再将角色赋值给用户账号,因为账号是Linux系统级的不太好分的粒度那么清楚。
下面是赋值权限的一些命令操作:

基于角色

--创建和删除角色  
create role role_name;  
drop role role_name;  
--展示所有roles  
show roles  
--赋予角色权限  
grant select on database zfs_test to role zfs_role;    
grant select on [table] employee to role user1_1;    
--查看角色权限  
show grant role role_name on database db_name;   
show grant role role_name on [table] t_name;   
--角色赋予用户  
grant role role_name to user user_name  
--回收角色权限  
revoke select on database db_name from role role_name;  
revoke select on [table] t_name from role role_name;  
--查看某个用户所有角色  
show role grant user user_name; 
--查看用户被赋予的角色 
show role grant user user1_1;
--查看所有权限的分配情况
show grant
--查看单个角色的权限分配情况
show grant role zfs_role;

基于用户

GRANT CREATE ON DATABASE default TO user mllib;
GRANT SELECT on table authorization_test to user mllib;
GRANT DROP on table authorization_test to user mllib;
GRANT ALL on table authorization_test to user mllib; 

查看权限分配

SHOW GRANT user mllib ON DATABASE default;
SHOW GRANT group test_role ON DATABASE default;

删除权限

revoke all on database spark from user mllib;

三、可以通过修改元数据表控制表权限

登录hive元数据库,可以发现以下表:

Db_privs:记录了User/Role在DB上的权限
Tbl_privs:记录了User/Role在table上的权限
Tbl_col_privs:记录了User/Role在table column上的权限
Roles:记录了所有创建的role
Role_map:记录了User与Role的对应关系

Hive在mysql上的元数据表主要分为:Database相关、Table相关、数据存储相关SDS、COLUMN相关、SERDE相关(序列化)、Partition相关(分区)、SKEW相关(数据倾斜)、BUCKET相关(分桶)、PRIVS相关(权限管理),对数据库-数据表、用户有相应关系体现。其中TBL_PRIVS存储了表/视图的授权信息,见如下数据字典:
在这里插入图片描述
再看mysql中存储Hive中所有数据库基本信息的表DBS数据字典:
在这里插入图片描述

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值