首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 使用者帳號與權限全生命周期管理:建立、授權、修改密碼、刪除實戰

     編輯:MySQL 綜合教學

MySQL 使用者管理是資料庫安全基石。本文系統梳理從建立帳號、分級授權、密碼變更、權限回收到帳號刪除的完整操作鏈路,採用現代 CREATE USER + GRANT 模式,並說明舊版 INSERT INTO user 的棄用原因,附贈常用查詢指令速查表。

一、建立使用者(現代語法,5.7+ 推薦)

-- 登入 root
mysql -u root -p

-- 建立帳號,指定認證插件與密碼策略
CREATE USER 'phplamp'@'localhost' IDENTIFIED BY '1234';
-- 或支援遠端連線
CREATE USER 'phplamp'@'%' IDENTIFIED BY '1234';

-- 驗證登入
mysql -u phplamp -p

優勢:語法清晰、自動處理 mysql.user 表複雜欄位(SSL、資源限制、密碼過期等),避免手動插入導致欄位缺失或版本不兼容。

二、建立資料庫並授權

-- 建立業務庫
CREATE DATABASE phplampDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- 全權限授權(僅限該庫)
GRANT ALL PRIVILEGES ON phplampDB.* TO 'phplamp'@'localhost';

-- 細粒度授權範例(僅讀寫)
GRANT SELECT, INSERT, UPDATE, DELETE ON phplampDB.* TO 'phplamp'@'localhost';

-- 讓使用者能將自己的權限轉授他人(謹慎使用)
GRANT ALL PRIVILEGES ON phplampDB.* TO 'phplamp'@'localhost' WITH GRANT OPTION;

-- 立即生效
FLUSH PRIVILEGES;

三、權限層級與常用權限速查

層級語法範例說明
全域GRANT ALL ON *.* TO 'u'@'%';所有庫所有表,含管理權限
資料庫GRANT ALL ON db.* TO 'u'@'%';指定庫內所有物件
資料表GRANT SELECT,INSERT ON db.tbl TO 'u'@'%';指定表特定操作
欄位GRANT SELECT(id,name) ON db.tbl TO 'u'@'%';欄位級存取控制
程序GRANT EXECUTE ON PROCEDURE db.sp TO 'u'@'%';存儲過程執行權限

常用權限關鍵字:ALL PRIVILEGES、SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、INDEX、ALTER、EXECUTE、RELOAD、SHUTDOWN、PROCESS、FILE、GRANT OPTION、REPLICATION SLAVE、REPLICATION CLIENT。

四、修改密碼(5.7+ 推薦 ALTER USER)

-- 修改自身密碼
SET PASSWORD = 'newpass';

-- root 修改他人密碼
ALTER USER 'phplamp'@'localhost' IDENTIFIED BY 'newpass';
-- 或
SET PASSWORD FOR 'phplamp'@'localhost' = 'newpass';

FLUSH PRIVILEGES;

舊版 UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE User='phplamp' AND Host='localhost'; 在 8.0 中 PASSWORD() 已移除,authentication_string 儲存雜湊值,不建議直接操作。

五、查看與審計權限

-- 顯示當前使用者權限
SHOW GRANTS;

-- 顯示指定使用者權限
SHOW GRANTS FOR 'phplamp'@'localhost';

-- 列出所有使用者
SELECT User, Host, plugin FROM mysql.user;

六、回收權限與刪除帳號

-- 回收特定權限
REVOKE INSERT, UPDATE ON phplampDB.* FROM 'phplamp'@'localhost';

-- 回收所有權限
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'phplamp'@'localhost';

-- 刪除帳號(8.0+ 自動清理權限記錄)
DROP USER 'phplamp'@'localhost';

-- 刪除關聯資料庫(謹慎!)
DROP DATABASE phplampDB;

FLUSH PRIVILEGES;

七、常用 DDL/DML 快速查詢速查表

操作指令
列出資料庫SHOW DATABASES;
切換資料庫USE `db_name`;
列出資料表SHOW TABLES;
顯示表結構DESCRIBE `table_name`; / SHOW CREATE TABLE `table_name`;
刪除資料庫DROP DATABASE `db_name`;
刪除資料表DROP TABLE `table_name`;

八、最佳實踐原則

  1. 最小權限:業務帳號僅授予必要庫、必要操作,嚴禁 *.* + WITH GRANT OPTION。
  2. 主機限定:優先 'user'@'10.0.0.%' 或具體 IP,避免 '%' 通配。
  3. 密碼策略:啟用 validate_password 元件,強制長度、複雜度、過期輪換。
  4. 定期審計:季度執行 SELECT User, Host FROM mysql.user WHERE User NOT IN ('root','mysql.sys',...) 清理殭屍帳號。
  5. 避免共用帳號:每應用、每環境獨立帳號,便於審計與撤銷。

總結

掌握 CREATE USER/GRANT/REVOKE/DROP USER 現代管理鏈路,配合最小權限與定期審計,即可構建合規、可控的 MySQL 存取治理體系。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved