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

Ubuntu MySQL 無法啟動快速排查:default-character-set 參數舊版不兼容

     編輯:MySQL 綜合教學

Ubuntu MySQL 無法啟動快速排查:default-character-set 參數舊版不兼容

現象:service mysql start 失敗,無明顯錯誤輸出。查看 /var/log/mysql/error.log 發現:


[ERROR] /usr/sbin/mysqld: unknown variable 'default-character-set=utf8'

根因

MySQL 5.5+ 已廢棄 default-character-set,改為 character-set-server。舊配置文件遷移或教程複製導致參數殘留。

修復步驟


# 1. 編輯配置文件
vim /etc/mysql/my.cnf
# 找到 [mysqld] 區段
# default-character-set=utf8   <-- 註釋或刪除
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 2. 同步修改 [client] 和 [mysql] 區段(客戶端默認字符集)
# [client]
default-character-set = utf8mb4
# [mysql]
default-character-set = utf8mb4

# 3. 重啟驗證
service mysql restart
# 或 systemctl restart mysql

驗證字符集生效


mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set_%'; SHOW VARIABLES LIKE 'collation_%';"

預期輸出關鍵行:


character_set_server    utf8mb4
collation_server        utf8mb4_unicode_ci
character_set_database  utf8mb4
character_set_client    utf8mb4
character_set_connection utf8mb4
character_set_results   utf8mb4

擴展:Ubuntu MySQL 常見啟動失敗速查表

錯誤日誌關鍵字原因解決
unknown variable 'xxx'參數名舊版/拼寫錯誤查閱對應版本官方手冊修正參數名
Can't create/write to file '/tmp/...'tmpdir 權限/磁盤滿chmod 1777 /tmp、清理空間或改 tmpdir
InnoDB: Unable to lock ./ibdata1已有進程佔用/殘留鎖文件pkill mysqld; rm -f /var/lib/mysql/ib_logfile*
Plugin 'InnoDB' registration as a STORAGE ENGINE failed配置參數錯誤(如 innodb_log_file_size 過大超過磁盤)縮小參數、刪除舊日誌文件重啟
Access denied for user 'root'@'localhost'權限表損壞/密碼錯誤--skip-grant-tables 重置密碼

最佳實踐

  1. 配置文件版本控制:/etc/mysql/my.cnf 納入 Git/Ansible 管理,避免手工改動漂移。
  2. 啟動前語法檢查:mysqld --help --verbose 2>&1 | head -20 可見解析到的參數;mysqld --validate-config(8.0+)直接驗證配置合法性。
  3. 日誌第一時間看:tail -f /var/log/mysql/error.log 比 service status 更直觀。

「報錯 unknown variable → 查手冊改參數名 → 重啟」是 Ubuntu/MySQL 遷移升級最常見的啟動阻斷,記住 character-set-server 替代 default-character-set,一分鐘搞定。

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