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

MySQL 常見錯誤排查手冊:1045/1067/2003/亂碼/權限問題全解析與高頻命令速查

     編輯:MySQL 綜合教學

MySQL 常見錯誤排查手冊:1045/1067/2003/亂碼/權限問題全解析與高頻命令速查

從 Windows 環境安裝、啟動、連接、權限、字符集到備份還原,本文匯總 7 大高發錯誤現場排查實錄,附標準解決步驟截圖,並整理 DBA 日常高頻命令速查表,助你快速定位、標準化處理。

一、 7 大高發錯誤排查實錄

1. ERROR 1045: Access denied for user 'root'@'localhost' (using password: YES)

原因:密碼錯誤、用戶表殘留臟數據、權限未授權、skip-grant-tables 衝突。

標準解決流程:

  1. 停止服務:net stop mysql
  2. 跳過權限啟動:mysqld --skip-grant-tables
  3. 另開終端免密登入:mysql -u root
  4. 修復用戶表:
    USE mysql;
    UPDATE user SET authentication_string=PASSWORD('newpwd'), plugin='mysql_native_password' WHERE User='root';
    FLUSH PRIVILEGES;
  5. 重啟服務驗證。

遠程訪問授權:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;

2. ERROR 1364: Field 'ssl_cipher' doesn't have a default value

原因:sql_mode 包含 STRICT_TRANS_TABLES,嚴格模式下無默認值的 NOT NULL 列插入報錯。

修復:修改 my.ini 移除 STRICT_TRANS_TABLES 或為該列設置默認值。
sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

3. 啟動服務報錯 1067: 進程意外終止

排查:查看錯誤日志 .err 文件。常見原因:my.ini 配置錯誤(路徑錯誤、參數衝突)。
快速恢復:刪除/重命名 my.ini,讓 MySQL 用默認配置啟動,再逐步加入自定義配置。

錯誤1067

4. ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)

原因:服務未啟動。
解決:services.msc 啟動 MySQL 服務,或 net start mysql。

5. Host 'localhost' is not allowed to connect to this MySQL server

原因:用戶表 host 列無 localhost 或 % 記錄。

修復(跳過權限啟動後):

mysqlcheck --check-upgrade --all-databases --auto-repair
-- 或手動更新
UPDATE mysql.user SET Host='%' WHERE User='root';
FLUSH PRIVILEGES;

修復host

連接成功

6. 中文亂碼問題

根因:客戶端、連接層、庫/表/列、結果集 4 層字符集不一致。

排查 3 步驟:

  1. 檢查表列字符集:SHOW CREATE TABLE t / SHOW FULL COLUMNS FROM t
  2. 檢查連接參數:SHOW VARIABLES LIKE 'char%'
  3. 確保 4 層統一為 utf8mb4(推薦)或 gbk。

字符集檢查

修復:Navicat/Workbench 修改庫/表/列字符集為 utf8mb4;JDBC URL 加 characterEncoding=utf8mb4;my.cnf 設置 character-set-server=utf8mb4。
Navicat修改字符集

7. 權限不足/用戶表臟數據

1045 根因常為:用戶表殘留無密碼/無 Host 記錄、未執行 FLUSH PRIVILEGES。
定期清理 mysql.user 異常記錄。

二、 DBA 高頻命令速查表

類別命令說明
服務控制net stop mysql / net start mysqlWindows 服務啟停
systemctl start/stop/restart mysqldLinux 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;修改庫字符集

三、 學習心得

  1. 備份是生命線:未知風險隨時發生,無備份等於裸奔。
  2. 沒有解決不了的問題,最壞重裝:保持冷靜,遞歸排查,必要時重來最快。
  3. 學習是漫長的補充與積累:前後知識互為補充,今天的疑惑或許在未來某個瞬間豁然開朗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved