從 Windows 環境安裝、啟動、連接、權限、字符集到備份還原,本文匯總 7 大高發錯誤現場排查實錄,附標準解決步驟截圖,並整理 DBA 日常高頻命令速查表,助你快速定位、標準化處理。
原因:密碼錯誤、用戶表殘留臟數據、權限未授權、skip-grant-tables 衝突。
標準解決流程:
net stop mysqlmysqld --skip-grant-tablesmysql -u rootUSE mysql;
UPDATE user SET authentication_string=PASSWORD('newpwd'), plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;遠程訪問授權:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; FLUSH PRIVILEGES;
原因:sql_mode 包含 STRICT_TRANS_TABLES,嚴格模式下無默認值的 NOT NULL 列插入報錯。
修復:修改 my.ini 移除 STRICT_TRANS_TABLES 或為該列設置默認值。
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
排查:查看錯誤日志 .err 文件。常見原因:my.ini 配置錯誤(路徑錯誤、參數衝突)。
快速恢復:刪除/重命名 my.ini,讓 MySQL 用默認配置啟動,再逐步加入自定義配置。

原因:服務未啟動。
解決:services.msc 啟動 MySQL 服務,或 net start mysql。
原因:用戶表 host 列無 localhost 或 % 記錄。
修復(跳過權限啟動後):
mysqlcheck --check-upgrade --all-databases --auto-repair -- 或手動更新 UPDATE mysql.user SET Host='%' WHERE User='root'; FLUSH PRIVILEGES;


根因:客戶端、連接層、庫/表/列、結果集 4 層字符集不一致。
排查 3 步驟:
SHOW CREATE TABLE t / SHOW FULL COLUMNS FROM tSHOW VARIABLES LIKE 'char%'
修復:Navicat/Workbench 修改庫/表/列字符集為 utf8mb4;JDBC URL 加 characterEncoding=utf8mb4;my.cnf 設置 character-set-server=utf8mb4。

1045 根因常為:用戶表殘留無密碼/無 Host 記錄、未執行 FLUSH PRIVILEGES。
定期清理 mysql.user 異常記錄。
| 類別 | 命令 | 說明 |
|---|---|---|
| 服務控制 | net stop mysql / net start mysql | Windows 服務啟停 |
| systemctl start/stop/restart mysqld | Linux systemd 管理 | |
| 連接登錄 | mysql -u root -p | 本地登錄 |
| mysql -h host -u user -p | 遠程登錄 | |
| mysql -u root -p db_name < backup.sql | 導入腳本 | |
| 庫/表管理 | SHOW DATABASES; | 列出所有庫 |
| USE db_name; SHOW TABLES; | 切庫、列表 | |
| CREATE/DROP DATABASE name; | 建刪庫 | |
| 備份還原 | mysqldump -u root -p db_name > backup.sql | 單庫備份 |
| mysqldump -u root -p --all-databases > all.sql | 全量備份 | |
| mysql -u root -p db_name < backup.sql | 還原 | |
| 字符集 | SHOW VARIABLES LIKE 'char%'; | 檢查連接字符集 |
| ALTER DATABASE db CHARSET=utf8mb4; | 修改庫字符集 |