2016-03-07 51 views
1

我已經搜索了很多關於「如何只允許一個用戶訪問一個模式」,但沒有找到任何有說服力的解決方案。我已經閱讀了關於GRANTREVOKE,但發現解決方案像授予或撤銷對特定用戶的特定表的權限。如何讓一個MySQL用戶只訪問一個模式

我在尋找的是,當有多個用戶時,每個用戶都可以訪問已定義的模式,並且一個用戶將擁有對一個模式的完全訪問權限。 而且我不希望一個用戶訪問其他Schema,除了給出訪問權限的用戶。

請建議如何正確使用GRANTREVOKE執行此操作?

回答

0
  • 舉的所有訪問你的YOUR_PARTICULAR_SCHEMA到特定 用戶從特定IP ADDRESS (in this case 1.2.3.4)命名USERNAME

    GRANT ALL PRIVILEGES ON YOUR_PARTICULAR_SCHEMA.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

  • 爲了讓您的YOUR_PARTICULAR_SCHEMA的所有訪問特定 用戶名爲USERNAME from any IP ADDRESS (use wildcard operator %)

    GRANT ALL PRIVILEGES ON YOUR_PARTICULAR_SCHEMA.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

  • 舉的所有訪問你所有的Schemas到特定 用戶從特定IP ADDRESS (in this case 1.2.3.4)命名USERNAME

    GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

  • 舉的所有訪問你所有的Schemas到特定的 用戶名爲USERNAME從任何IP ADDRESS (use wildcard operator %)

    GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

注:您的方案在於前兩種情況。你可以根據你的選擇選擇其中的任何一個。

編輯:如果您想從先前被授予權限的用戶中刪除權限,請使用REVOKE命令。

REVOKE刪除權限,但不刪除mysql.user表項。 要完全刪除用戶帳戶,請使用DROP USER

+1

謝謝。第二選項爲我工作。 '授予YOUR_PARTICULAR_SCHEMA *上的所有特權*到'USERNAME'@'%'通過授予選項的'密碼'識別;' 這幫助我創建了兩個擁有兩個數據庫權限並且不影響其他數據庫的不同用戶結構體。 當試圖用用戶一登錄到數據庫二時,它給出了「訪問被拒絕」錯誤。這確實是需要的。 –

+0

很高興聽到它的工作。歡迎您:) @MandarPandit – 1000111

相關問題