然后打开hive的客户端,在客户端上面执行如下命令:
CREATE ROLE bigdata;(创建数据库角色)
GRANT ROLE bigdata TO USER bigdata;(将数据库角色赋予用户)
GRANT CREATE ON DATABASE test TO role bigdata;(给角色test库的建表权限) 这里执行是给数据库test赋予创建表的权限。这里的数据库test自己提前创建好。
GRANT SELECT ON DATABASE test TO role bigdata;(给查询权限) 这里赋予数据库test查询的执行的权限。
grant ALL ON DATABASE test TO USER bigdata; 这里是将所有的权限给数据库test,他的用户的bigdata。
当然了这里既然可以进行赋予权限当然也可以进行撤回权限。
REVOKE ALL on database test from user bigdata;(收回权限) 但是这里的权限一旦你只赋予一部分的权限给数据库test是撤回不了的。具体的报错如下;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoo
从上面的截图中可以看出只有赋予全部权限的时候才能将权限撤回来,要不然报错。
我们也可以查看给bigdata角色赋予的权限:
这里我们能看到我们赋予角色创建和查询的权限。然后登陆hue的客户端进行试验。确实是可以进行查询和创建的。为了试一下能不能正真的控制权限我将全部的权限撤回来。然后只给这个角色查询的权限。但是报错。
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoo
还是报这个错,最后的解决办法是将创建的的角色bigdata删除掉,然后重新创建。然后再执行命令就可以了。就是这么简单。
这次只给bigdata用户操作hive数据库test的查询权限。创建权限是没有给,然后测试效果如下:
这里显示是没有创建数据的权限的,至此给一个用户操作数据的权限的赋予完成。