2026-03-16

【Metabase】限制/區隔一般 user 的查詢權限

有時,基於工作/職務劃分,公司的資料會進行可視資料權限的控管;例如:行銷部的可以看到有關客戶名單,但不能看業務部有關銷售的業績、人事資料...等,反之亦然。

Metabase 社群版沒有限制使用者可視資料的功能(付費版才有),也就是說,當系統管理員建立了一個資料庫連線,則所有 Metabase 的一般使用者都能看到該連線的所有 table。

不過我們有變通做法 -- 從資料庫分別設定幾個限制權限的帳號,本筆記以 MySQL8 做範例,例如建立帳號 user1(代表業務部),只授予 user1 能查詢檢視 table1,建立帳號 user2(代表行銷部),只能查詢檢視 table2


root 帳號登入 phpMyAdmin 或 登入 Linux 開一個命令列視窗然後建立一個 MySQL 連線,本例示範在 phpMyAdmin 操作
 
-- 建立使用者
CREATE  USER  'user1'@'localhost' IDENTIFIED BY '密碼';

-- 授予 USER1 查詢資料庫 db1 的 table1 的權限
GRANT  SELECT  ON  db1.table1  TO  'user1'@'localhost';

-- 刷新權限(選擇性命令, 通常會自動生效)
FLUSH  PRIVILEGES;
 


驗證:登出 phpMyAdmin,以 user1 登入,就能看到 user1 只能看到 db1table1 的資料。


以管理員帳號登入 Metabase  設定 → 管理員設定

資料庫 → 新增資料庫(以 MySQL8 為例)


輸入在前面為行銷建立的帳號 user1,並在【顯示名稱】輸入 sales(Linuxmint22.2MySQL8 設定安裝可參考相關筆記),重複步驟建立 user2,【顯示名稱】輸入 marketing


到【權限管理】→【所有使用者群組】,這個群組預設是可查詢所有資料庫的,而且會高過其他群組的設定,所以要把 marketing、sales 的【建立提問】取消


設定業務部只能查詢 sales 資料庫


而行銷部只能查詢 marketing 資料庫


相關筆記 ----





沒有留言:

張貼留言