從 Ubuntu 轉戰 CentOS 部署 MySQL,路徑、服務管理、配置文件全變了。本文梳理 RPM 安裝的完整實戰流程,覆蓋配置文件修改、服務啟動、字符集統一、安全初始化四大塊,避開跨平台部署的常見坑。
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
old_passwords=1
default-character-set = utf8 # 新增:服務端字符集
[mysql]
default-character-set = utf8 # 新增:客戶端字符集
Ubuntu 安裝後自動啟動,CentOS 需手動:
# 方式一:service(推薦)
service mysqld start
# 方式二:init.d 腳本
/etc/rc.d/init.d/mysqld start
# 方式三:安全模式(前台調試用)
/usr/bin/mysqld_safe &
啟動後用 ps -ef | grep mysql 確認進程,關鍵參數 --datadir、--socket、--log-error、--pid-file 均可見於進程命令行。
修改配置前:
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8 |
| character_set_results | latin1 |
| character_set_server | utf8 |
| ...
客戶端變量(client/connection/results)仍為 latin1,會導致中文亂碼。
修改 my.cnf 重啟後:
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+--------+
| Variable_name | Value |
+--------------------------+--------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| ...
所有關鍵變量均為 utf8,字符集配置真正落地。
-- 查看預設用戶(含匿名用戶、空密碼 root)
SELECT host, user, password FROM mysql.user;
-- 刪除匿名用戶
DELETE FROM mysql.user WHERE user='';
-- 設定 root 密碼(必須用 PASSWORD() 函數加密)
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('StrongPass123');
SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('StrongPass123');
SET PASSWORD FOR 'root'@'::1' = PASSWORD('StrongPass123');
-- 刷新權限
FLUSH PRIVILEGES;
補充:mysql_secure_installation 腳本可自動化完成上述安全加固。
| 項目 | Ubuntu (apt) | CentOS (RPM) |
|---|---|---|
| 配置文件 | /etc/mysql/my.cnf | /etc/my.cnf |
| 資料目錄 | /var/lib/mysql | /var/lib/mysql |
| Socket | /var/run/mysqld/mysqld.sock | /var/lib/mysql/mysql.sock |
| 服務管理 | systemctl/mysql.service | service mysqld / systemctl |
| 啟動腳本 | /usr/bin/mysqld_safe | /usr/bin/mysqld_safe |
記住差異,跨平台部署不再迷路。