這段時間在搞大資料的集群搭建工作,並且安裝了hive的服務,但是沒有對其中的資料庫的操作許可權做限制,每個人都可以對資料庫進行增刪改查。今天有空做了一下了對hive資料庫當中的資料庫做一些限制。
我們都是在hue的客戶端進行操作hive當中的資料庫。操作如下:
(1)在hue介面建立登入使用者:
(2) 配置hive許可權控制
如上圖所示在hive的配置檔案當中加入這些配置,控制hive的執行許可權。
(3)給集群伺服器新增使用者(集群節點都要新增)
useradd bigdata 這裡是建立bigdata使用者passwd bigdata 這裡是給bigdata使用者進行密碼的設定。
重啟hive服務
然後開啟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是撤回不了的。具體的報錯如下;
從上面的截圖中可以看出只有賦予全部許可權的時候才能將許可權撤回來,要不然報錯。我們也可以檢視給bigdata角色賦予的許可權:
這裡我們能看到我們賦予角色建立和查詢的許可權。然後登陸hue的客戶端進行試驗。確實是可以進行查詢和建立的。為了試一下能不能正真的控制許可權我將全部的許可權撤回來。然後只給這個角色查詢的許可權。但是報錯。failed: execution error, return code 1 from org.apache.hadoop.hive.ql.exec.ddltask. org.apache.hadoo還是報這個錯,最後的解決辦法是將建立的的角色bigdata刪除掉,然後重新建立。然後再執行命令就可以了。就是這麼簡單。
這次只給bigdata使用者操作hive資料庫test的查詢許可權。建立許可權是沒有給,然後測試效果如下:
這裡顯示是沒有建立資料的許可權的,至此給乙個使用者運算元據的許可權的賦予完成。詳細可以參考:ref:
Hive當中實現pivot操作
0.背景 實際工作當中遇到這樣乙個問題,資料如下,但是我想通過sql將資料轉換成按列展示的形式,即常用的pivot透視操作。原始資料 id item value 1 a 10 2 b 21 1 b 15 2 a 20 次級目標格式 sql id itemvalue 1 a 10,b 15 2 a 2...
HIVE當中的關聯查詢
在hive中沒有外來鍵和主鍵之分。但是可以進行多表關聯查詢 值關聯 只要這兩個值相等就可以作為關聯條件,其實在mysql中也是支援。mysql中的關聯查詢 left join 左連線 right join 右連線 innerjoin 全連線 內連線 t user id name 1 zs 2 ls ...
C 當中隨機數的產生
在程式設計當中我們時常需要產生一些隨機數,c 當中隨機數的產生主要依靠兩個函式rand和srand,下面談談這兩個函式及其用法。1.rand rand 會返回一隨機數值,範圍在0至rand max 間。rand max定義在stdlib.hrand 產生的實際上是偽隨機數,例如如下 include ...