MySQL 因開源、穩定且與 PHP 完美搭配,成為網站後端資料庫首選。為保障資料安全,掌握密碼變更與精細權限控管至關重要。本文系統整理六種修改密碼方法與兩種權限設定方式,適用 MySQL 5.7/8.0 環境。
mysql 資料庫 → user 表。authentication_string(或舊版 Password)欄位選擇 PASSWORD 函數,輸入新密碼存檔。UPDATE mysql.user SET authentication_string=PASSWORD('newpwd') WHERE User='root' AND Host='localhost'; FLUSH PRIVILEGES;mysqladmin -u root -p'oldpassword' password 'newpasswd'
root 換成目標用戶名即可修改該用戶密碼。mysqladmin 連不上伺服器則無效。INSERT INTO mysql.user (Host, User, authentication_string)
VALUES ('%', 'system', PASSWORD('manager'));
FLUSH PRIVILEGES;
Host 設 % 允許任意主機連線。authentication_string,8.0 建議改用 CREATE USER / ALTER USER。REPLACE INTO mysql.user (Host, User, authentication_string)
VALUES ('%', 'system', PASSWORD('manager'));
FLUSH PRIVILEGES;
(Host,User) 存在則更新,否則插入。SET PASSWORD FOR 'system'@'%' = PASSWORD('manager');
FLUSH PRIVILEGES,立即生效。ALTER USER 'system'@'%' IDENTIFIED BY 'manager';GRANT USAGE ON *.* TO 'system'@'%' IDENTIFIED BY 'manager';
PASSWORD() 函數,也不需 FLUSH PRIVILEGES。IDENTIFIED BY 已移至 CREATE USER / ALTER USER,GRANT 不再支援設密碼。-- 建立超級用戶 system,密碼 manager,允許本機連線,可授權他人
GRANT ALL PRIVILEGES ON *.* TO 'system'@'localhost' IDENTIFIED BY 'manager' WITH GRANT OPTION;
-- 建立管理用戶 admin,僅有 RELOAD、PROCESS 權限,無密碼
GRANT RELOAD, PROCESS ON *.* TO 'admin'@'localhost';
-- 建立無權限用戶 dummy,僅能連線
GRANT USAGE ON *.* TO 'dummy'@'localhost';
WITH GRANT OPTION 允許該用戶將自己的權限授予他人。localhost 僅限本機;% 允許遠端。兩者需分別授權,否則匿名用戶優先順序可能導致連線被拒。-- 超級用戶(14 個 Y 對應 3.22 版 14 欄位權限)
INSERT INTO mysql.user
VALUES ('localhost','system',PASSWORD('manager'),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
-- 管理用戶:僅設定 Reload_priv、Process_priv
INSERT INTO mysql.user SET Host='localhost', User='admin',
Reload_priv='Y', Process_priv='Y';
-- 無權限用戶
INSERT INTO mysql.user (Host, User, Password) VALUES ('localhost','dummy','');
FLUSH PRIVILEGES;
權限欄位對照(MySQL 3.22 版 14 欄位):
| 權限 | 欄位名 | 說明 | 層級 |
|---|---|---|---|
| SELECT | Select_priv | 查詢資料 | 表 |
| INSERT | Insert_priv | 新增資料 | 表 |
| UPDATE | Update_priv | 修改資料 | 表 |
| DELETE | Delete_priv | 刪除資料 | 表 |
| CREATE | Create_priv | 建立庫/表/索引 | 庫/表/索引 |
| DROP | Drop_priv | 刪除庫/表 | 庫/表 |
| RELOAD | Reload_priv | 重讀授權表 | 伺服器管理 |
| SHUTDOWN | Shutdown_priv | 關閉伺服器 | 伺服器管理 |
| PROCESS | Process_priv | 檢視執行緒 | 伺服器管理 |
| FILE | File_priv | 讀寫伺服器檔案 | 檔案存取 |
| GRANT | Grant_priv | 授權給他人 | 庫/表 |
| REFERENCES | References_priv | 外鍵參考 | 庫/表 |
| INDEX | Index_priv | 建立/刪除索引 | 表 |
| ALTER | Alter_priv | 修改表結構 | 表 |