2017-02-10 90 views
5

無論是使用MySQL的5.6或5.7,在AWS RDS託管,或Docker MySQL container,我想創建一個最小權限的用戶,例如命名爲creator,可以執行以下操作:創建MySQL數據庫,用戶和授予權限所需的最低權限是什麼?

  • 創建一個新的數據庫。
  • 創建一個新用戶。
  • 授予新數據庫中所有表的新用戶SELECT和INSERT權限。

我寧願如果creator用戶不能訪問它不負責創建的現有數據庫。

這是可以實現的嗎?

我迄今爲止的研究表明,這樣的creator用戶可能需要跨MySQL實例的全局SELECT和INSERT權限,但這看起來過多。

回答

2

你可以用一個存儲過程,它比SP simplier,可能是你正在尋找的解決方法,這樣做: GRANT CREATE USER ON *.* TO '<user>'@'<host'; GRANT ALL PRIVILEGES ON `<user>_%`.* TO '<user>'@'<host>' WITH GRANT OPTION; 正如你在this answer你需要注意幾點看:

  1. 用戶將只能創建與他的用戶名+開始數據庫「_」(使用給定鏈路的例子,如果你的用戶名是aaa您可以創建數據庫的名字是aaa_example,如果AAA想創建一個名爲bbb_example MySQL數據庫會放棄拒絕權限的錯誤
  2. 他只會對由他創建的那些數據庫擁有特權,但是他創建的用戶創建的特權(如果他授予該特權)。
  3. 然而,他可能會管理他擁有的數據庫中的特權。

考慮到這一點,您可以調整此`<user>_%`以適應您的大部分需求。