後來我使用了CM5.13.3spark2kafka3.1.1解決了很多疑難雜症——hue+hive數據庫權限

由於數據庫用於多個部門,每個人都可以對數據庫進行增刪改查,需要對數據庫的操作進行權限限制。

  • 在hue界面創建登錄用戶hivetest
  • 在hive-site.xml的Hive和HiveServer2高級配置中添加配置
<property>

<name>hive.security.authorization.enabled</name>

<value>true</value>

</property>

<property>

<name>hive.security.authorization.createtable.owner.grants</name>

<value>ALL</value>

</property>

<property>

<name>hive.security.authorization.task.factory</name>

<value>org.apache.hadoop.hive.ql.parse.authorization.HiveAuthorizationTaskFactoryImpl</value>

</property>
  • 給集羣服務器添加用戶(集羣節點都要添加)
useradd hivetest 這裏是創建hivetest用戶

passwd hivetest  這裏是給hivetest用戶進行密碼的設置。

重啓hive服務
然後打開hive的客戶端,在客戶端上面執行如下命令:

CREATE ROLE hivetest;(創建數據庫角色) 

GRANT ROLE hivetest TO USER hivetest;(將數據庫角色賦予用戶)

GRANT CREATE ON DATABASE test TO role hivetest;(給角色test庫的建表權限)  這裏執行是給數據庫test賦予創建表的權限。這裏的數據庫test自己提前創建好。

GRANT SELECT ON DATABASE test TO role hivetest;(給查詢權限) 這裏賦予數據庫test查詢的執行的權限。

grant ALL ON DATABASE test TO USER hivetest;  這裏是將所有的權限給數據庫test,他的用戶的hivetest。

當然了這裏既然可以進行賦予權限當然也可以進行撤回權限。

REVOKE ALL on database test from user hivetest;(收回權限)  但是這裏的權限一旦你只賦予一部分的權限給數據庫test是撤回不了的。具體的報錯如下;


 FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoo


從上面的截圖中可以看出只有賦予全部權限的時候才能將權限撤回來,要不然報錯。
我們也可以查看給hivetest角色賦予的權限:

這裏我們能看到我們賦予角色創建和查詢的權限。然後登陸hue的客戶端進行試驗。確實是可以進行查詢和創建的。爲了試一下能不能正真的控制權限我將全部的權限撤回來。然後只給這個角色查詢的權限。但是報錯。

 FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. org.apache.hadoo 
還是報這個錯,最後的解決辦法是將創建的的角色bigdata刪除掉,然後重新創建。然後再執行命令就可以了。就是這麼簡單。
這次只給hivetest用戶操作hive數據庫test的查詢權限。創建權限是沒有給,然後測試效果如下:

這裏顯示是沒有創建數據的權限的,至此給一個用戶操作數據的權限的賦予完成。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章