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

Linux MySQL 徹底卸載與安裝配置字符集實戰:apt 環境親測流程

     編輯:MySQL 綜合教學

Linux MySQL 徹底卸載與安裝配置字符集實戰:apt 環境親測流程

Ubuntu/Debian 系列系統下,MySQL 的安裝、卸載、字符集配置看似簡單,實則暗藏 mysql-libs 殘留、my.cnf 版本差異、systemd 服務名變更、SELinux/AppArmor 干擾等坑點。本文基於 Ubuntu 14.04/16.04 + MySQL 5.5/5.6/5.7 親測,提供「三步徹底卸載 → 兩方式安裝 → 版本感知字符集配置 → 驗證生效」標準化流程。

一、徹底卸載 MySQL (三步清零)

# 1. 檢查是否安裝
ps -aux | grep mysql
# 無輸出即未運行;有輸出則記錄進程信息

# 2. 三連擊徹底清除 (需 root/sudo)
# 步驟 1: 移除服務端包 (自動處理依賴,包含配置文件)
sudo apt-get autoremove --purge mysql-server-5.7  # 替換為實際版本:5.5/5.6/5.7/8.0

# 步驟 2: 移除公共依賴包 (libmysqlclient 等)
sudo apt-get remove mysql-common

# 步驟 3: 清理殘留配置文件 (rc 狀態包)
dpkg -l | grep ^rc | awk '{print $2}' | sudo xargs dpkg -P

# 4. 驗證徹底性
dpkg -l | grep mysql
# 應無輸出
ls /etc/mysql /var/lib/mysql /var/log/mysql 2>/dev/null
# 目錄應不存在或為空

關鍵點: autoremove --purge 同時刪除包與配置文件;mysql-common 必須單獨移除;dpkg -P 清除 rc (remove 配置殘留) 狀態包,防止重裝讀取舊配置。

二、安裝 MySQL (兩種方式)

方式 A:APT 官方倉庫安裝 (推薦,自動依賴、安全更新)

# 更新源
sudo apt-get update

# 安裝服務端 + 客戶端
sudo apt-get install mysql-server mysql-client

# 安裝過程會提示設置 root 密碼 (5.5/5.6) 或生成臨時密碼 (5.7+)
# 服務自動啟動並加入開機自啟

方式 B:MySQL 官方 APT Repository 安裝 (指定版本、更新更快)

# 1. 下載並安裝官方 repo 配置包
wget https://repo.mysql.com/mysql-apt-config_0.8.22-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb
# 交互選擇:MySQL 版本 (5.6/5.7/8.0/Cluster) → Apply

# 2. 更新並安裝
sudo apt-get update
sudo apt-get install mysql-community-server mysql-community-client

三、字符集配置:版本感知是核心

進入 MySQL 確認當前字符集:

mysql -u root -p
SHOW VARIABLES LIKE '%character%';

MySQL 5.5 及以下版本 (舊參數名:下劃線)

# 編輯 /etc/mysql/my.cnf
[client]
default-character-set = utf8

[mysqld]
default-character-set = utf8  # 注意:5.5 用 default-character-set

MySQL 5.6 / 5.7 / 8.0 版本 (新參數名:連字符)

# 編輯 /etc/mysql/my.cnf (或 /etc/mysql/mysql.conf.d/mysqld.cnf)
[client]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4   # 關鍵:連字符版!
collation-server = utf8mb4_general_ci
# 或 8.0 推薦:collation-server = utf8mb4_0900_ai_ci

版本分水嶺: 5.5 用 default-character-set,5.6+ 必須用 character-set-server。混用將導致配置失效,字符集仍為 latin1。

四、重啟驗證生效

# 重啟服務 (systemd)
sudo systemctl restart mysql
# 或 SysVinit
sudo /etc/init.d/mysql restart

# 進入驗證
mysql -u root -p
SHOW VARIABLES LIKE '%char%';

成功標準:

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

除 character_set_system (固定 utf8) 和 character_set_filesystem (固定 binary) 外,其餘 6 項必須為 utf8mb4。

五、存量庫表遷移 (配置修改僅影響新建對象)

# 庫級
ALTER DATABASE `db_name` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci;

# 表級 (鎖表重建,大表用 pt-online-schema-change / gh-ost)
ALTER TABLE `db_name`.`table_name` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

六、AppArmor 干擾排查 (Ubuntu 特有)

若遷移 datadir 後啟動失敗,日志顯示 Permission denied,檢查 AppArmor:

# 查看 MySQL 配置文件
cat /etc/apparmor.d/usr.sbin.mysqld
# 需包含新 datadir 路徑權限:
#   /new/datadir/ r,
#   /new/datadir/** rwk,

# 修改後重載
sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld

總結

Linux MySQL 標準化運維鐵律:卸載三連擊 (autoremove --purge → remove common → dpkg -P rc) → 安裝選官方源 → 字符集配置版本分水嶺 (5.5 default-character-set / 5.6+ character-set-server) → 重啟驗證 6 大 utf8mb4 變量 → 存量遷移 → AppArmor 放行。每一步親測有效,可作為團隊標準操作手冊 (SOP) 直接落地。

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