首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 用戶權限管理完整指南:從授權到撤銷的實戰操作

     編輯:MySQL 資料庫相關知識

MySQL 用戶權限管理是資料庫安全的核心防線。透過精細的權限控制,我們能限制用戶存取特定資料庫、資料表,規範 SELECT、INSERT、UPDATE、DELETE 等操作權限,甚至限制登入來源 IP 或域名,以及控制權限是否可轉授。本文系統梳理 MySQL 權限管理的完整生命週期,包含授權、刷新、查看、回收、刪除、重命名與密碼修改等核心操作,並附上實戰指令與注意事項,助你構建安全合規的資料庫環境。

一、核心權限管理功能

MySQL 權限體系主要發揮四大作用:

  1. 存取範圍控制:限定用戶可訪問的資料庫與資料表
  2. 操作權限細分:精確控制 SELECT、CREATE、DROP、ALTER 等具體操作
  3. 登入來源限制:透過 IP 或域名限制連線來源
  4. 權限轉授管控:決定用戶是否可將自身權限授予他人

二、用戶授權實戰

基本授權語法

GRANT ALL PRIVILEGES ON *.* TO 'yangxin'@'%' IDENTIFIED BY 'yangxin123456' WITH GRANT OPTION;

關鍵字解析

  • ALL PRIVILEGES:授予所有權限,亦可指定單一權限如 SELECT、CREATE、DROP
  • ON database.table:權限生效範圍,* 代表所有資料庫與資料表;指定單表如 test.user
  • TO 'user'@'host':用戶名與登入來源,% 表示無限制;'yangxin'@'192.168.0.%' 僅允許該網段登入
  • IDENTIFIED BY:設定登入密碼
  • WITH GRANT OPTION:允許用戶將自身權限轉授他人

權限疊加特性

GRANT 授權採疊加機制,不會覆蓋既有權限。例如先授 SELECT,再授 INSERT,用戶將同時擁有兩項權限。完整權限清單請參考 MySQL 官方文檔。

MySQL 權限授權示意圖

三、刷新權限生效

權限變更後必須執行 FLUSH PRIVILEGES; 將記憶體中權限資訊寫入資料庫,否則變更不生效。

四、查看用戶權限

SHOW GRANTS FOR 'yangxin'@'localhost';

查看用戶權限輸出示例

五、回收權限

REVOKE CREATE ON *.* FROM 'yangxin'@'localhost';
FLUSH PRIVILEGES;

上例移除 yangxin 的 CREATE 權限,該用戶將無法建立資料庫與資料表。

六、刪除用戶

DROP USER 'yangxin'@'localhost';

執行前可先查詢現有用戶:

SELECT host, user FROM mysql.user;

七、用戶重命名

RENAME USER 'test3'@'%' TO 'test1'@'%';

八、修改密碼的三種方式

1. 直接更新 mysql.user 表

USE mysql;
-- MySQL 5.7 之前
UPDATE user SET password=PASSWORD('123456') WHERE user='root';
-- MySQL 5.7 之後
UPDATE user SET authentication_string=PASSWORD('123456') WHERE user='root';
FLUSH PRIVILEGES;

2. SET PASSWORD 指令

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('123456');

3. mysqladmin 命令列工具

mysqladmin -u root -p123456 password 1234abcd

注意:mysqladmin 位於 MySQL 安裝目錄的 bin 目錄下。

九、忘記 Root 密碼的重置流程

  1. 啟用跳過權限檢查:修改 my.cnf,在 [mysqld] 區段添加 skip-grant-tables
  2. 重啟 MySQL 服務:service mysqld restart
  3. 免密登入修改密碼:使用方式一更新密碼
  4. 還原配置並重啟:移除 skip-grant-tables,再次重啟服務

忘記密碼重置流程示意圖

十、最佳實踐建議

  • 遵循最小權限原則,僅授予業務必需權限
  • 生產環境禁用 root 遠端登入,限制來源 IP
  • 定期審計用戶權限,清理僵屍帳號
  • 重要操作前備份權限表:mysqldump mysql user db tables_priv columns_priv > grants_backup.sql
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved