2010-07-02 140 views
0

我一直在尋找通過互聯網很長一段時間的答案。 我如何控制php和MySQL之間的用戶和連接。 我的問題是,當我們通過php創建一個mysql數據庫時,實際上我們在mysql的用戶表中創建用戶。當我連接到數據庫時,我們創建的所有用戶都使用相同的mysql用戶帳戶連接到數據庫。 我是否需要在mysql用戶表中創建任何用戶(我的意思是系統表擁有用戶)?那麼我們用來登錄網站的用戶會在sql數據庫用戶表中匹配用戶呢?然後,每個用戶都有自己的mysql用戶帳戶來連接數據庫。 我該怎麼處理這種情況? 乾杯PHP MySQL連接

+1

哇,看完這兩遍後,我真的不知道這裏被問到了什麼。你是指用戶信息的MySQL表,還是你在談論訪問數據庫的實際MySQL用戶帳戶? – jordanstephens 2010-07-02 17:29:24

+0

歡迎來到SO。我無法關注你。你能澄清一下嗎?你在談論mySQL中的用戶表(用於你自己的應用程序)還是mySQL用戶帳戶? – 2010-07-02 17:29:40

+3

我相信他談論的是爲他的PHP應用程序的每個用戶創建一個單獨的MySQL用戶(如在一個MySQL帳戶中訪問特定的表等)。答案是,不。您不需要每個應用程序用戶都有一個MySQL用戶。大多數應用程序只使用1或2個MySQL用戶。 – 2010-07-02 17:51:38

回答

4

我想我理解你的問題,你問的是數據庫方面的用戶管理。

默認情況下,您擁有數據庫中的單個用戶,該用戶擁有(當然)所有權限。這個用戶大部分時間都會被命名爲root(取決於您的DBMS,但在MySQL的情況下,情況就是這樣)。

所以,你必須IMO兩種選擇:

  • 每個應用創建一個新用戶,由於只有所需的特權,如READINSERTUPDATE。如果你的申請要求,給他DELETE特權。
  • 對於訪問數據庫的所有應用程序使用root
  • 創建一個將擁有最普通權限的用戶,該用戶將用於需要與數據庫交互的ALL應用程序。

無論你做什麼,請記住,用戶可以做任何他有權限,所以請注意GRANT太高的權限。

我認爲這是一種最佳實踐(至少對我來說這種情況總是如此,我認爲它工作得很好),以每個應用爲基礎有一個用戶,例如,當我想要一個應用程序Blog時,我創建了一個用戶blog,它具有INSERT,UPDATE,SELECT,[需要的任何]權限。

再一次編輯:所以要回答你的問題:你不需要每個應用程序用戶都有一個MySQL用戶。

1

您的應用程序中的每個用戶應爲而不是是MySQL中的用戶。一般來說,你應該有一個你的整個應用程序使用的MySQL用戶。

0

更好的是,爲每個應用程序創建一個用戶。授予該用戶執行存儲過程的權利,而不是別的。爲您允許該用戶的任何類型的數據庫活動創建存儲過程。它給你另一個安全屏障。