萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 修改密碼與訪問限制設置詳解:六大修改法與 GRANT 精細授權

前言

MySQL 作為多用戶、多線程的 SQL 服務器,安全運行的前提是合理的賬號密碼管理與精細的權限控制。本文系統總結六種修改密碼方法,並深入講解基於 GRANT 與直接操作 mysql.user 表的訪問限制設置技巧。

一、MySQL 修改密碼六大方法

前提: 除 root 或擁有 SUPER/UPDATE mysql.user 權限的用戶外,普通用戶無法自行修改密碼,需管理員協助。

方法一:phpMyAdmin 圖形化操作

最直觀,直接編輯 mysql.user 表。插入用 INSERT、修改用 UPDATE、刪除用 DELETE,**務必使用 PASSWORD() 函數加密**,操作後執行 FLUSH PRIVILEGES。

方法二:mysqladmin 命令行工具

mysqladmin -u root -p'oldpass' password 'newpass'

需輸入舊密碼,若 mysqladmin 無法連接服務器則失效,且無法將密碼置空。

方法三:INSERT + FLUSH PRIVILEGES(實為創建用戶)

INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'system', PASSWORD('manager'));
FLUSH PRIVILEGES;

方法四:REPLACE INTO(覆蓋式創建/更新)

REPLACE INTO mysql.user (Host, User, Password) VALUES ('%', 'system', PASSWORD('manager'));
FLUSH PRIVILEGES;

方法五:SET PASSWORD 語句(推薦)

SET PASSWORD FOR 'system'@'%' = PASSWORD('manager');

無需 FLUSH PRIVILEGES,語義清晰,官方推薦。

方法六:GRANT ... IDENTIFIED BY(授權同步設置密碼)

GRANT USAGE ON *.* TO 'system'@'%' IDENTIFIED BY 'manager';

無需 PASSWORD() 函數,亦無需 FLUSH PRIVILEGES,最便捷。

核心提示: PASSWORD() 為單向加密函數,MySQL 內部自動驗證,切勿嘗試反解。

二、訪問限制設置兩大流派

流派一:GRANT 授權語句(推薦,動態生效)

-- 創建超級用戶
GRANT ALL PRIVILEGES ON *.* TO 'system'@'localhost' IDENTIFIED BY 'manager' WITH GRANT OPTION;

-- 創建業務只讀賬號
GRANT SELECT ON `mydb`.* TO 'readonly'@'192.168.1.%' IDENTIFIED BY 'readonly123';

優點:語法標準、支持通配符主機、即時生效、可撤銷(REVOKE)。

流派二:直接操作 mysql.user 表(舊版兼容,需 FLUSH)

MySQL 3.22.34 版本 user 表有 14 個權限字段(Select_priv 至 File_priv),需按順序填寫 Y/N:

INSERT INTO mysql.user VALUES
('localhost','system',PASSWORD('manager'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
FLUSH PRIVILEGES;

缺點: 版本升級字段可能變更、易寫錯順序、需手動刷新、不支持表級/列級權限。

三、關鍵權限字段速查表

權限列名說明作用範圍
SELECTSelect_priv查詢數據表
INSERTInsert_priv插入數據表
UPDATEUpdate_priv更新數據表
DELETEDelete_priv刪除數據表
CREATECreate_priv創建庫/表/索引庫/表/索引
DROPDrop_priv刪除庫/表庫/表
RELOADReload_priv執行 FLUSH 命令服務器管理
SHUTDOWNShutdown_priv關閉服務器服務器管理
PROCESSProcess_priv查看進程/慢查詢服務器管理
FILEFile_priv讀寫服務器文件(高危)文件系統

四、最佳實踐建議

  1. 優先使用 GRANT/REVOKE 管理權限,避免直接操作系統表。
  2. 密碼策略:長度≥12位,包含大小寫、數字、特殊字符,定期輪換。
  3. 賬號綁定具體 IP 或網段,禁用 '%' 通配符。
  4. 業務賬號嚴禁擁有 FILE、SHUTDOWN、PROCESS、SUPER 權限。
  5. 定期執行 SELECT User, Host FROM mysql.user WHERE Password='' OR Password IS NULL; 排查空密碼賬號。
copyright © 萬盛學電腦網 all rights reserved