本文記錄在 CentOS 6.3 最小化安裝環境下,從原始碼編譯安裝 MySQL 5.6.10 的完整流程,包含資料與程式目錄分離、防火牆設定、開機自啟、Root 密碼修改與遠程授權等生產環境關鍵步驟。
# 系統更新
yum -y update
# 安裝編譯工具鏈
yum -y install wget gcc-c++ ncurses-devel cmake make perl
# 建立 mysql 使用者與群組
groupadd mysql
useradd mysql -g mysql
# 規劃目錄結構:程式與資料分離
mkdir -p /usr/local/mysql # 執行檔目錄
mkdir -p /db/mysql/data # 資料目錄
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /db/mysql/data
# 將 mysql bin 目錄加入 PATH
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
echo 'export PATH' >> /etc/profile
source /etc/profile
# 設定本機 hostname 解析(避免啟動警告)
echo '192.168.211.100 centhost.centdomain' >> /etc/hosts
vi /etc/sysconfig/iptables
# 新增規則
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
service iptables restart
cd /usr/src
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.10.tar.gz/from/https://cdn.mysql.com/
tar -zxvf mysql-5.6.10.tar.gz
cd mysql-5.6.10
# CMake 配置關鍵參數
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_DATADIR=/db/mysql/data \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306
# 編譯與安裝(視硬體效能約 15-40 分鐘)
make
make install
# 複製預設配置檔
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
# 初始化系統資料庫
cd /usr/local/mysql
scripts/mysql_install_db --user=mysql --datadir=/db/mysql/data
# 註冊系統服務
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
# 啟動並設定開機自啟
service mysql start
chkconfig mysql on
mysql -u root -p
# 進入 MySQL 後執行:
USE mysql;
-- 修改本地 root 密碼
UPDATE user SET Password = PASSWORD('123456') WHERE User = 'root';
-- 建立可遠程登入的 root 帳號(生產環境建議改用專用帳號)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
# 本地連線測試
mysql -u root -p123456 -e "SELECT VERSION();"
# 遠程連線測試(需客戶端 IP 允許)
mysql -h 192.168.211.100 -u root -p123456 -e "SHOW DATABASES;"
/etc/my.cnf 中的 innodb_buffer_pool_size 設為實體記憶體 60-70%。slow_query_log=1、long_query_time=2。mysqldump --single-transaction --master-data=2 或 Percona XtraBackup。DELETE FROM mysql.user WHERE User=''; DROP DATABASE test;。