生產環境推薦使用官方編譯優化的二進制包(Generic Linux Glibc 2.5 x86_64),避免源碼編譯風險,利用社區成熟經驗快速落地。本文記錄標準化安裝步驟:用戶創建、目錄規劃、配置文件、數據初始化、服務管理。
mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz/root 或 /opt/srcgroupadd mysql
useradd -r -g mysql -s /sbin/nologin -M mysql
# -r: 系統用戶,無登錄shell,UID < 1000
# 1. 解壓至 /opt/mysql
tar -xzf mysql-5.6.27-linux-glibc2.5-x86_64.tar.gz -C /opt/mysql
# 2. 創建軟鏈接(便於版本切換)
cd /usr/local
ln -s /opt/mysql/mysql-5.6.27-linux-glibc2.5-x86_64 mysql
# 3. 賦權
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /opt/mysql/mysql-5.6.27-linux-glibc2.5-x86_64
mkdir -p /data/mysql/{data,logs,tmp}
chown -R mysql:mysql /data/mysql
# data: 數據文件
# logs: Binlog、錯誤日志、慢查詢日志
# tmp: 臨時文件、排序文件
創建 /etc/my.cnf(或 /usr/local/mysql/my.cnf),核心配置:
[client]
port = 3306
socket = /data/mysql/tmp/mysql.sock
default-character-set = utf8mb4
[mysqld]
user = mysql
port = 3306
socket = /data/mysql/tmp/mysql.sock
basedir = /usr/local/mysql
datadir = /data/mysql/data
tmpdir = /data/mysql/tmp
pid-file = /data/mysql/tmp/mysqld.pid
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
# 日志
log-error = /data/mysql/logs/error.log
slow-query-log = 1
slow-query-log-file = /data/mysql/logs/slow.log
long-query-time = 2
log-bin = /data/mysql/logs/binlog
binlog-format = ROW
expire-logs-days = 7
server-id = 1
# InnoDB 核心
innodb_buffer_pool_size = 4G # 物理內存 50-70%
innodb_log_file_size = 512M
innodb_log_files_in_group = 2
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
innodb_read_io_threads = 8
innodb_write_io_threads = 8
# 連接與緩存
max_connections = 2000
open_files_limit = 65535
table_open_cache = 4000
query_cache_type = 0
query_cache_size = 0
# 安全
skip-name-resolve
explicit_defaults_for_timestamp = 1
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
關鍵參數:explicit_defaults_for_timestamp=1 解決 5.6+ TIMESTAMP 默認值警告;skip-name-resolve 禁用 DNS 反解,提升連接速度。
cd /usr/local/mysql
./scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql
# 輸出兩個 "OK" 表示成功:
# Installing MySQL system tables... OK
# Filling help tables... OK
# 1. 啟動服務(前台調試)
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
# 2. 登錄測試
/usr/local/mysql/bin/mysql -uroot -p -S /data/mysql/tmp/mysql.sock
# 初始密碼為空,直接回車
# 3. 修改 root 密碼
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongPass123!';
mysql> FLUSH PRIVILEGES;
# 4. 測試連接
/usr/local/mysql/bin/mysql -uroot -p'StrongPass123!' -S /data/mysql/tmp/mysql.sock -e "SELECT VERSION();"
# 複製啟動腳本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
# 加入服務管理
chkconfig --add mysqld
chkconfig mysqld on
# 測試
service mysqld start
service mysqld stop
service mysqld restart
| 項目 | 命令/檢查 | 預期 |
|---|---|---|
| 進程存在 | ps -ef | grep mysqld | mysqld 進程運行 |
| 端口監聽 | netstat -ntlp | grep 3306 | LISTEN 0.0.0.0:3306 |
| Socket文件 | ls -l /data/mysql/tmp/mysql.sock | 存在,屬主 mysql |
| 登錄成功 | mysql -uroot -p -S /data/mysql/tmp/mysql.sock | 進入交互界面 |
| 系統庫完整 | SHOW DATABASES; | mysql, performance_schema, information_schema, sys |
| 字符集正確 | SHOW VARIABLES LIKE 'character_set%'; | 均為 utf8mb4 |
| InnoDB就緒 | SHOW ENGINES; | InnoDB DEFAULT |
| Binlog開啟 | SHOW VARIABLES LIKE 'log_bin'; | ON |