萬盛學電腦網

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

MySQL 賬戶管理命令全集:建立、授權、回收、重命名、改密

用戶管理核心命令

1. 建立用戶

-- MySQL 5.7
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';

-- MySQL 8.0+ (推薦)
CREATE USER 'jeffrey'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mypass';
-- 或 caching_sha2_password (8.0 預設)
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';

主機名說明:localhost (本地 socket)、127.0.0.1 (本地 TCP)、% (任意 IP)、192.168.1.% (網段)。

2. 刪除用戶

DROP USER 'jeffrey'@'localhost';
-- 同時刪除其所有權限

3. 授權 (GRANT)

-- 全庫全表所有權限 + 授權權限
GRANT ALL PRIVILEGES ON *.* TO 'jeffrey'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

-- 單庫讀寫
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app'@'192.168.1.%' IDENTIFIED BY 'pass';

-- 僅查詢
GRANT SELECT ON *.* TO 'readonly'@'%';

4. 回收權限 (REVOKE)

-- 回收特定權限
REVOKE INSERT ON *.* FROM 'jeffrey'@'localhost';

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

5. 重命名用戶

RENAME USER 'jeffrey'@'localhost' TO 'jeff'@'127.0.0.1';

6. 修改密碼

-- 修改當前用戶密碼
SET PASSWORD = PASSWORD('newpass');
-- 或 8.0+
ALTER USER USER() IDENTIFIED BY 'newpass';

-- root 修改他人密碼
SET PASSWORD FOR 'jeffrey'@'localhost' = PASSWORD('newpass');
-- 8.0+
ALTER USER 'jeffrey'@'localhost' IDENTIFIED BY 'newpass';

查看用戶與權限

-- 所有用戶
SELECT host, user, authentication_string FROM mysql.user;

-- 特定用戶權限
SHOW GRANTS FOR 'jeffrey'@'localhost';

-- 當前用戶權限
SHOW GRANTS;

重要限制與規範

  • 用戶名長度:MySQL 5.7 限 16 字元,8.0 擴展至 32 字元
  • 勿直接操作 mysql 系統表:只能用 GRANT/CREATE USER 等 SQL,手動 UPDATE mysql.user 會導致未定義行為
  • OS 用戶 ≠ MySQL 用戶:系統帳號長度限制不同(如 Unix 8 字元)
  • 密碼策略:8.0 預設啟用 validate_password 元件,強制複雜度

權限層級速查

層級權限範例適用對象
全域ALL PRIVILEGES, SUPER, RELOAD, SHUTDOWN*.*
資料庫SELECT, INSERT, CREATE, DROPdb.*
資料表SELECT, UPDATE, DELETE, ALTER, INDEXdb.table
欄位SELECT (col1, col2), UPDATE (col1)db.table(col)
程序/函數EXECUTE, ALTER ROUTINEPROCEDURE db.proc
copyright © 萬盛學電腦網 all rights reserved