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

MySQL 入門筆記 (一):登錄、建用戶、授權、刷新權限、刪用戶五步走

     編輯:MySQL 綜合教學

MySQL 入門筆記 (一):用戶與權限管理五步走

MySQL 安裝後的第一課:連接、建用戶、授權、刷新、刪除。本文提供標準化命令流,避開「授權不生效」「匿名用戶殘留」等新手坑。

1. 登錄 MySQL

mysql -u root -p
# 輸入密碼進入 mysql> 交互模式

2. 建立用戶 (推薦 8.0+ 語法)

-- 方式一:建用戶 + 密碼 (8.0+)
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass123!';

-- 方式二:指定主機 (僅允許特定 IP/網段)
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPass123!';
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPass123!';

-- 方式三:舊版 5.7 兼容寫法 (直接插入 mysql.user 表,不推薦)
-- INSERT INTO mysql.user (Host, User, authentication_string) VALUES ('%', 'app_user', PASSWORD('pass'));

Host 字段含義:

  • %:允許**任意主機**連接 (遠程訪問)。
  • localhost:僅允許**本機 Unix Socket** 連接。
  • 127.0.0.1:僅允許**本機 TCP/IP** 連接。
  • 192.168.1.%:允許特定網段。

3. 授權 (Grant) — 遵循最小權限原則

-- 全庫全表所有權限 (僅管理員/所有者)
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;

-- 單庫所有權限 (應用賬號標配)
GRANT ALL PRIVILEGES ON `my_db`.* TO 'app_user'@'%';

-- 精細權限 (唯讀/寫入分離)
GRANT SELECT, INSERT, UPDATE, DELETE ON `my_db`.* TO 'rw_user'@'%';
GRANT SELECT ON `my_db`.* TO 'ro_user'@'%';

-- 特定表/欄位權限
GRANT SELECT (id, name) ON `my_db`.`users` TO 'api_user'@'%';

4. 刷新權限 (關鍵步驟,否則不生效)

FLUSH PRIVILEGES;

MySQL 將權限表緩存於內存,**修改後必須執行此命令**讓實例重新讀取權限表。8.0+ 部分場景自動刷新,但手動執行無副作用且保險。

5. 刪除用戶

-- 8.0+ 標準語法
DROP USER 'app_user'@'%';

-- 5.7 兼容 (直接刪表記錄)
DELETE FROM mysql.user WHERE User='app_user' AND Host='%';
FLUSH PRIVILEGES;

避坑指南

坑點現象解決
授權後連不上忘記 FLUSH PRIVILEGES執行 FLUSH PRIVILEGES
遠程連不上用戶 Host 為 localhost/127.0.0.1建立 Host='%' 用戶或修改 Host
匿名用戶安全隱患User='' 允許無密碼登入mysql_secure_installation 或手動 DELETE FROM mysql.user WHERE User='';
密碼策略太強報錯validate_password 元件拒絕弱密碼降低等級或用強密碼 (大小寫+數字+特殊符號 12位+)

查看當前用戶與權限

SELECT User, Host FROM mysql.user;
SHOW GRANTS FOR 'app_user'@'%';

一句話總結: **CREATE USER → GRANT 最小權限 → FLUSH PRIVILEGES → 驗證連接 → 定期審計 DROP 廢棄用戶**,用戶管理零事故。

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