CDH初期部署时没有做权限控制,现在需要加权限,下面是添加权限的过程。
1.登录hive,查看角色,报错:
hive> show roles;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Current user : root is not allowed to list roles. User has to belong to ADMIN role and have it as current role, for this action.
说明没有开启权限控制,所以先 修改 hive 配置 ,添加 hive-site.xml 配置
CDH版本的hive-site.xml是通过CM配置生成的文件,每次启动,都会根据CM选项还原配置,因此,我们必须用CM界面,找到Hive的配置选项,修改Hive的配置项。修改过程按照大佬博客操作即可。
https://blog.csdn.net/gdkyxy2013/article/details/105722837
- hive的权限问题:
增加用户,对用户赋权,但表多,用户多的情况下,会重复很多工作,因此我们一般会用hive自己的分组方式role来批量管理权限。
思路:
先 创建role角色 给role赋权
然后 把role赋给user用户即可。
创建用户必须是admin角色的用户才能做到,因此需要把root用户加入admin角色中:
当root有admin角色后,需要用root登陆hive,然后再次set role admin;
- 开始创建和赋权。
(1、创建角色
create role testgroup;
(2、给角色赋权
grant select on database db_name to role testgroup;
grant select on db_name.table_name to role testgroup;
当然select可为all\update\delete\create…
(3、把角色赋给用户
grant role testgroup to user tct_01;
PS:这里的用户为服务器的用户,赋角色前需要先创建用户。 查看用户和创建用户的过程参考https://blog.csdn.net/weixin_31495827/article/details/116545508
用root账户登录,操作过程简略截图演示下过程:
(4、可以测试看看权限了
SHOW ROLE GRANT user tct_01;
show grant user tct_01 on database db_name ;
也可以连接hive数据库,校验下权限。
4.hive用户和服务器用户是一样的,所以要注意下服务器上用户的权限。
不想开放给tct_01的文件也可以看到。所以修改文件的权限
参考文章:
https://blog.csdn.net/fairynini/article/details/106057736
https://blog.csdn.net/weixin_31495827/article/details/116545508