2010-03-05 159 views
2

我將在同一臺mySql服務器上使用不同項目使用的多個表。大部分數據都很敏感,並且需要位於權限牆後面。然而,許多敏感數據表依賴於用戶和部門信息的不敏感數據表。所以我看到了三個選項,我不確定選擇哪一個。在MySql中管理跨數據庫讀取,查看或權限

所有在表級別的權限

最簡單的所有解決方案中,除了我沒有在數據庫服務器上控制權限,傳統的服務器團隊只做數據庫級別的權限一個數據庫,讓他們允許它是一場我可能沒有贏的影響力的政治鬥爭,跟蹤所有的權限將是一個痛苦。

在多個數據庫,與數據庫級權限

我可以分割表到數據庫的區域,所以部門廣泛的信息,比如工作人員的數據,可以在它自己的數據庫和工具,編輯員工數據可以更新&對部門數據庫的INSERT訪問權限。其他工具需要訪問員工列表的部分內容,公職人員目錄對員工表具有SELECT訪問權限,但員工表的分析表需要保持私人狀態,如個人聯繫信息,複製代碼或帳單索引。我需要將員工表分成公共或私人表,但我會再次遇到表級權限問題。所以我需要將部門數據庫分成共享部門和部門私人數據庫。

跨數據庫視圖 我會創造在從該帳戶不能訪問其它數據庫中提取數據一個數據庫視圖。因此,我可以將所有員工信息放在部門數據庫中,然後在網絡數據庫中創建一個僅查看應公開可用的列(名稱,部門,擴展名)的視圖。這將允許我實際上擁有列級別的SELECT權限,而不必沉迷於權限。我擔心的是速度。原始表格中的數據將被完全索引,但文檔似乎是矛盾的,無論查詢視圖時是否索引列。

有沒有其他人使用過這三個選項中的任何一個?你有沒有想過的更好的?除了我已經指出的任何選項之外,您可以看到哪些缺陷?

回答

1

視圖和存儲過程是你最好的選擇。視圖可用於提供通用訪問,但如果某些查詢執行不足,請重新編寫它們以使用存儲過程繞過視圖以提高性能。

+0

存儲過程是否也跨越權限屏障,我可以使用高級帳戶設置過程,然後使用低級帳戶查看數據? –

+0

是的 - 存儲過程的主要功能之一是它們可以更好地管理權限。存儲過程定義的帳戶會更好,因爲本地帳戶 - 例如'sp_owner'@'localhost' - 可以降低遠程用戶在破解密碼時獲得強大訪問權限的風險。最靈活的安排是,如果您的存儲過程被定義爲「create definer = current_user procedure ...」,那麼決定將它們定義在哪個帳戶下可以推遲到加載時間。 – Martin