# 格式:mysql -h主機 -u用戶 -p密碼 # 本地連接(進入 bin 目錄或配置 PATH) mysql -u root -p # 遠程連接 mysql -h 110.110.110.110 -u root -pabcd123 # 退出 exit
提示:-p 後無空格直接跟密碼,或留空交互式輸入更安全。
# 首次設置密碼(root 初始無密) mysqladmin -u root password 'ab12' # 修改已有密碼 mysqladmin -u root -p'ab12' password 'djg345'
注意:mysqladmin 是客戶端工具,在系統 Shell 下執行,非 MySQL 客戶端內部命令。
-- 允許任意主機訪問所有庫 GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'test1'@'%' IDENTIFIED BY 'abc'; FLUSH PRIVILEGES;
風險:密碼洩露導致全網可訪問,生產環境禁用。
-- 僅允許本機訪問指定庫 GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'test2'@'localhost' IDENTIFIED BY 'abc'; -- 移除密碼(極不推薦) GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'test2'@'localhost' IDENTIFIED BY '';
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPass@2024'; GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'app_user'@'192.168.1.%'; FLUSH PRIVILEGES;
| 層級 | 權限關鍵字 | 典型場景 |
|---|---|---|
| 全局 | FILE, PROCESS, RELOAD, SHUTDOWN, SUPER | 管理員運維 |
| 庫級 | CREATE, DROP, ALTER, INDEX | 架構變更 |
| 表級 | SELECT, INSERT, UPDATE, DELETE | 業務增刪改查 |
| 列級 | SELECT(col), UPDATE(col) | 敏感字段隔離 |
| 特殊 | ALL PRIVILEGES, USAGE | 超管/僅登錄 |
DROP USER ''@'%';DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost','127.0.0.1','::1');DROP DATABASE test;require_secure_transport=ONSHOW GRANTS FOR 'user'@'host';| 錯誤現象 | 原因 | 修正 |
|---|---|---|
| Access denied | 密碼錯誤/主機不匹配 | 檢查 user 表 Host 欄位,確認客戶端 IP |
| Password hash outdated | 舊版認證插件 | ALTER USER 'u'@'h' IDENTIFIED WITH mysql_native_password BY 'pwd'; |
| GRANT 失效 | 未執行 FLUSH PRIVILEGES | MySQL 8.0+ 通常自動生效,舊版需手動刷新 |
掌握「連接→改密→授權」鐵三角,即可構建基本安全的 MySQL 訪問體系。生產環境務必遵循最小權限原則,定期輪換憑證。