2010-07-11 106 views
4

我們正在構建一個多用戶應用程序,其中每個用戶都有一個數據庫。所有客戶數據庫結構都相同。現在我們正在生成一個新的mysql用戶(每個客戶端),它只具有在其自己的數據庫上工作的權限。使用單個或多個mysql用戶用於多租戶架構的SaaS PHP/mysql應用程序

例如mysql user1擁有dbase1。*(database1.alltables)的權限,mysql user2擁有dbase2。*的權限。

我們現在注意到,這已經是一個痛苦轉移到另一臺服務器作爲備份(我們不使用複製,但嘗試暫時轉儲文件一次,但不能刪除information_schema dbase &從sql重新創建文件似乎

無論如何,我們想知道是否最好只使用一個可以訪問所有客戶端數據庫的用戶呢?這是更不安全的權利?還是可以以一種相當安全的方式使用?

您的想法是什麼?

回答

2

Wha您可能想要做的是,在爲MySQL用戶創建時,還會將該用戶創建的記錄存儲在其他位置(數據庫外部),然後使用腳本將用戶及其權限恢復到該數據庫中記錄你創建的。

+0

謝謝,這是一個很好的提示,但我們仍然必須管理所有這些用戶帳戶。有沒有辦法用一個帳戶做到這一點,仍然保持安全? – Jorre 2010-07-12 07:23:19

+1

好吧,多用戶帳戶的優勢在於它爲您提供了另一層隔離 - 如果由於某種原因執行了SQL注入,它可以觸及的最多的是單個客戶的數據。 除此之外,理論上你可以爲數據庫編寫你自己的封裝層,它只會強制訪問當前客戶的數據庫,這會給你類似的好處;你只是相信你的編碼,而不是MySQL團隊的編碼。 – Amber 2010-07-12 08:06:02