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

Windows 命令行下 MySQL 用戶管理:創建、授權、刪除、修改密碼 Windows 命令行下 MySQL 用戶管理:創建、授權、刪除、修改密碼

     編輯:MySQL 綜合教學

前言

Windows 環境下通過命令行管理 MySQL 用戶是運維基本功。本文提供標準化操作流程,適用於 MySQL 5.7+ / 8.0 版本,涵蓋創建、授權、刪除、密碼修改四大核心場景。

前置條件

  • 以管理員身份運行 CMD / PowerShell
  • 已進入 MySQL bin 目錄:cd C:\Program Files\MySQL\MySQL Server 8.0\bin
  • 擁有 root 權限:mysql -u root -p

一、創建用戶

方法 1:CREATE USER (推薦,5.7+)

mysql> CREATE USER 'phplamp'@'localhost' IDENTIFIED BY '1234';
Query OK, 0 rows affected

方法 2:INSERT INTO mysql.user (兼容舊版,不推薦)

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

⚠️ 注意

MySQL 8.0 移除 PASSWORD() 函數,改用 caching_sha2_password 插件,直接操作 user 表極易導致無法登錄。統一使用 CREATE USER。

驗證創建

mysql> EXIT;
C:\> mysql -u phplamp -p
Enter password: 1234
mysql> -- 登錄成功

二、用戶授權

1. 基礎授權語法

GRANT 權限列表 ON 數據庫.表 TO '用戶'@'主機' [IDENTIFIED BY '密碼'] [WITH GRANT OPTION];

2. 常用授權場景

場景命令
全庫全表所有權限 (超級管理員)GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
指定庫所有權限GRANT ALL PRIVILEGES ON mydb.* TO 'dev'@'%';
指定表讀寫權限GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.orders TO 'app'@'%';
只讀權限GRANT SELECT ON mydb.* TO 'readonly'@'%';
僅執行存儲過程GRANT EXECUTE ON mydb.* TO 'proc_user'@'%';
遠程 IP 限制GRANT ALL ON mydb.* TO 'user'@'192.168.1.%';

3. 權限生效

FLUSH PRIVILEGES;

4. 查看用戶權限

SHOW GRANTS FOR 'phplamp'@'localhost';
SHOW GRANTS;  -- 當前用戶

三、刪除用戶

標準流程

-- 1. 登錄 root
mysql -u root -p

-- 2. 刪除用戶 (8.0+ 推薦)
DROP USER 'phplamp'@'localhost';

-- 3. 刪除用戶專屬數據庫 (可選)
DROP DATABASE phplampDB;

-- 4. 刷新權限
FLUSH PRIVILEGES;

🚫 禁用舊寫法

-- 直接操作 mysql.user 表 (8.0 不兼容,易損壞權限系統)
DELETE FROM mysql.user WHERE User='phplamp' AND Host='localhost';

四、修改密碼

MySQL 8.0+ (推薦)

-- 方法 1: ALTER USER (需當前用戶有權限或 root)
ALTER USER 'phplamp'@'localhost' IDENTIFIED BY 'new_password';

-- 方法 2: SET PASSWORD (當前登錄用戶修改自己密碼)
SET PASSWORD = 'new_password';

-- 方法 3: mysqladmin (命令行直接修改,無需進入 mysql>)
mysqladmin -u phplamp -p'old_pass' password 'new_pass'

MySQL 5.7 (兼容寫法)

SET PASSWORD FOR 'phplamp'@'localhost' = PASSWORD('new_password');
-- 或
UPDATE mysql.user SET authentication_string = PASSWORD('new_password') 
WHERE User='phplamp' AND Host='localhost';
FLUSH PRIVILEGES;

五、常見問題排查

問題原因解決
Access denied for user 'root'@'localhost'密碼錯誤/權限不足確認密碼、跳過授權表啟動重置
Plugin caching_sha2_password could not be loaded客戶端版本過低不支持 8.0 默認插件升級客戶端或改用 mysql_native_password: ALTER USER 'u'@'%' IDENTIFIED WITH mysql_native_password BY 'pwd';
Host 'x.x.x.x' is not allowed to connect用戶 Host 不匹配創建 '%' 主機用戶或具體 IP:CREATE USER 'u'@'%' ...
FLUSH PRIVILEGES 報錯權限表損壞檢查 mysql.user 表完整性,必要時 mysql_upgrade

六、最佳實踐清單

□ 原則:最小權限 — 僅授業務必需權限
□ 原則:按環境隔離 — dev/test/prod 使用不同用戶
□ 原則:禁止 root 遠程登錄 — bind-address=127.0.0.1 或創建專用運維用戶
□ 原則:強密碼策略 — 12+ 位、大小寫、數字、特殊字符
□ 原則:定期輪換 — 核心賬號 90 天輪換
□ 原則:審計日志 — 開啟 general_log 或 audit 插件記錄敏感操作

總結

Windows 下 MySQL 用戶管理核心四步:CREATE USER → GRANT → FLUSH PRIVILEGES → 驗證登錄。MySQL 8.0 強制使用 caching_sha2_password,請拋棄舊式 INSERT INTO mysql.user 和 PASSWORD() 寫法。授權遵循最小權限,定期審計輪換。

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