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

Windows CMD 下 MySQL 用戶管理全攻略:創建、授權、刪除、修改密碼

     編輯:MySQL 資料庫相關知識

前置條件

  • 擁有 MySQL `root` 賬號或 `CREATE USER`、`GRANT OPTION` 權限。
  • 在 CMD (命令提示符) 下操作,phpMyAdmin 同理。

1. 登錄 MySQL

mysql -u root -p
# 輸入 root 密碼

2. 創建用戶

MySQL 5.7+ / 8.0 推薦語法

CREATE USER 'phplamp'@'localhost' IDENTIFIED BY '1234';
-- 或允許遠程
CREATE USER 'phplamp'@'%' IDENTIFIED BY '1234';

MySQL 5.6 及舊版語法 (兼容)

INSERT INTO mysql.user (Host, User, Password) 
VALUES ('localhost', 'phplamp', PASSWORD('1234'));
FLUSH PRIVILEGES;

驗證登錄

mysql -u phplamp -p
# 輸入 1234 登錄成功

3. 用戶授權 (GRANT)

常用授權模板

-- 全庫全表所有權限 (慎用)
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

-- 特定庫所有權限 (推薦應用賬號)
GRANT ALL PRIVILEGES ON `app_db`.* TO 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPass!';

-- 僅讀賬號 (報表/備份)
GRANT SELECT ON `app_db`.* TO 'readonly'@'192.168.1.%' IDENTIFIED BY 'ReadOnlyPass!';

-- 僅增刷改 (無 DROP/ALTER)
GRANT SELECT, INSERT, UPDATE, DELETE ON `app_db`.* TO 'rw_user'@'%' IDENTIFIED BY 'RWPass!';

-- 刷新生效
FLUSH PRIVILEGES;

權限說明

權限含義
ALL PRIVILEGES除 GRANT OPTION 外所有權限
SELECT/INSERT/UPDATE/DELETE增刪改查
CREATE/DROP/ALTER建/刪/改表結構
INDEX建/刪索引
GRANT OPTION將自己的權限授予他人
FILE讀寫服務器文件 (`LOAD_FILE`, `INTO OUTFILE`) **極危險,禁用**
SUPER/PROCESS/SHUTDOWN管理權限 **嚴禁應用賬號**

4. 修改用戶密碼

MySQL 5.7+ / 8.0

ALTER USER 'phplamp'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;

MySQL 5.6 / 通用

UPDATE mysql.user SET Password=PASSWORD('new_password') 
WHERE User='phplamp' AND Host='localhost';
FLUSH PRIVILEGES;

命令行工具 `mysqladmin` (腳本適用)

mysqladmin -u phplamp -p'old_pass' password 'new_pass'

5. 刪除用戶

-- 5.7+ / 8.0
DROP USER 'phplamp'@'localhost';

-- 5.6 / 通用
DELETE FROM mysql.user WHERE User='phplamp' AND Host='localhost';
FLUSH PRIVILEGES;

-- 同步刪除用戶數據庫 (謹慎)
DROP DATABASE phplampDB;

6. 查看用戶與權限

-- 所有用戶
SELECT User, Host, plugin FROM mysql.user;

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

避坑指南

問題原因解決
創建用戶報錯 `Plugin 'mysql_native_password' is not loaded`8.0 默認 `caching_sha2_password`,客戶端不支持`CREATE USER ... IDENTIFIED WITH mysql_native_password BY 'pass';`
遠程連接 `Access denied`用戶 Host 不匹配 (`localhost` vs `%`)創建 `%` 用戶或具體 IP 用戶,檢查防火牆
授權後不生效未執行 `FLUSH PRIVILEGES`必須執行 (5.7+ 部分場景自動刷新,但建議手動執行)
密碼含特殊字符 `@#$%` 登錄失敗Shell 轉義單引號包裹 `mysql -u user -p'pass@#$%'` 或交互式輸入

總結

MySQL 用戶管理核心口訣:**5.7+ 用 `CREATE USER`/`ALTER USER`/`DROP USER`,舊版用 `INSERT/UPDATE/DELETE mysql.user` + `FLUSH PRIVILEGES`**。**最小權限原則**:應用賬號僅授予特定庫 `SELECT/INSERT/UPDATE/DELETE`,禁用 `FILE`、`SUPER`、`GRANT OPTION`。定期 `SHOW GRANTS` 審計權限。

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