Mysql
授予典型使用者的合理權限是什麼?
我發現MySQL 提供的權限列表有點壓倒性。我不確定誰應該有什麼特權。在我看來,我的情況有三個典型的使用者:
root
developer
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';