Mysql

授予典型使用者的合理權限是什麼?

  • January 8, 2019

我發現MySQL 提供的權限列表有點壓倒性。我不確定誰應該有什麼特權。在我看來,我的情況有三個典型的使用者:

  1. root
  2. developer
  3. application

root是不言自明的。對於developer此使用者,需要能夠輕鬆訪問任何數據庫,對其進行調整等。對於初學者,我將此使用者設置為此權限集:

SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON

application有一個更有限的集合。它應該僅限於操作特定的數據庫。

我不確定要授予什麼合理的特權。授予開發人員和應用程序的合理權限是什麼?為什麼?

一個典型的使用者應該有:

SELECT, INSERT, DELETE, UPDATE, CREATE TEMPORARY TABLES, EXECUTE

前四個非常明顯——儘管您也可以設置“只讀”使用者僅使用SELECT.

CREATE TEMPORARY也很方便且通常無害:臨時表可以幫助優化查詢,將它們分成更小更快的部分。它們僅限於正在執行的連接,並在關閉時自動刪除。

EXECUTE取決於您的系統類型。你有儲存的常式嗎?您希望您的使用者訪問它們嗎?確保您還了解SECURITY=DEFINER/INVOKER儲存常式的定義。

在任何情況下,請確保將上述所有內容應用於特定架構避免使用:

GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'some_user'@'some_host';

由於上述內容還授予mysql系統表的權限,有效地允許任何使用者創建新帳戶或升級他們自己的權限集。相反,請執行以下操作:

GRANT SELECT, INSERT, UPDATE, DELETE ON some_schema.* TO 'some_user'@'some_host';
GRANT SELECT, INSERT, UPDATE, DELETE ON another_schema.* TO 'some_user'@'some_host';

引用自:https://dba.stackexchange.com/questions/49803