二進制包(Generic Linux Glibc)免編譯、部署快、版本固定,是生產環境主流選擇。本文以 RedHat 6.2 + MySQL 5.6 x86_64 為例,記錄標準化部署全流程。
# 下載解壓
tar -zxvf mysql-5.6.x-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
mv /usr/local/mysql-5.6.x-linux-glibc2.12-x86_64 /usr/local/mysql
# 創建 mysql 用戶組
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
# 創建數據、日志、Socket 目錄
mkdir -p /usr/local/mysql/data /usr/local/mysql/log
chown -R mysql:mysql /usr/local/mysql
拷貝模板並修改:cp support-files/my-default.cnf /usr/local/mysql/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /usr/local/mysql/mysql.sock
pid-file = /usr/local/mysql/mysqld.pid
user = mysql
port = 3306
server-id = 1
skip-name-resolve # 跳過 DNS 反解,提升連接速度
lower_case_table_names = 1 # 表名不區分大小寫,跨平台遷移安全
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
explicit_defaults_for_timestamp = ON # 5.6.6+ 兼容舊版 TIMESTAMP 行為
# InnoDB 核心調優 (按內存 60-70% 設置)
innodb_buffer_pool_size = 4G
innodb_log_file_size = 512M
innodb_log_files_in_group = 3
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = ON
innodb_data_file_path = ibdata1:1G:autoextend
[mysqld_safe]
log-error = /usr/local/mysql/log/mysqld.log
pid-file = /usr/local/mysql/mysqld.pid
[client]
socket = /usr/local/mysql/mysql.sock
default-character-set = utf8mb4
cd /usr/local/mysql
./scripts/mysql_install_db --defaults-file=my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
生成 data/mysql 系統庫及 ibdata1、ib_logfile*。
# 註冊為系統服務
cp support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
# 常用操作
service mysqld start|stop|restart|status
# 啟動
cd /usr/local/mysql
./bin/mysqld_safe --defaults-file=my.cnf &
# 停止 (推薦)
./bin/mysqladmin -u root -p -h 127.0.0.1 shutdown
# 或強制
pkill -f mysqld
# 設置 root 密碼
./bin/mysqladmin -u root -h 127.0.0.1 password 'StrongPass123!'
# 遠程授權
./bin/mysql -uroot -h127.0.0.1 -p -e "
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'StrongPass123!' WITH GRANT OPTION;
FLUSH PRIVILEGES;"
# 刪除匿名用戶、測試庫
./bin/mysql -uroot -h127.0.0.1 -p -e "
DELETE FROM mysql.user WHERE User='';
DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;"
netstat -ltnp | grep 3306mysql -uroot -h127.0.0.1 -p -e "SELECT VERSION();"mysqld_exporter 采集指標。yum install -y libaio,缺失會報 libaio.so.1 not found。setenforce 0 臨時關閉,或配置策略允許 mysqld_t 讀寫數據目錄。ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime,避免 TIMESTAMP 寫入偏差。ulimit -n 65535 寫入 /etc/security/limits.conf 及 mysqld_safe 腳本。標準化二進制部署流程,配合版本鎖定、配置模板化、自動化腳本,可實現 MySQL 集群的分鐘級交付與穩定運維。