本文記錄在 CentOS 6.5 環境下,從源碼 tarball 編譯安裝 MySQL 5.6.24 的完整流程,包含依賴套件、cmake 參數解析、配置檔範本、服務註冊與啟動驗證,適合需自訂編譯參數或離線安裝的生產環境部署。
mysql-5.6.24.tar.gz/usr/local/mysql/var/lib/mysql/etc/my.cnfmysql (nologin)yum install -y cmake ncurses-devel bison gcc-c++ gcc
useradd -s /sbin/nologin -M mysql
tar -zxvf mysql-5.6.24.tar.gz cd mysql-5.6.24
cmake . \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/var/lib/mysql \ -DSYSCONFDIR=/etc \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \ -DENABLED_LOCAL_INFILE=1 \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EMBEDDED_SERVER=1 \ -DWITH_SSL=system \ -DMYSQL_USER=mysql
| 參數 | 用途 |
|---|---|
| CMAKE_INSTALL_PREFIX | MySQL 主程式安裝根目錄 |
| MYSQL_DATADIR | 資料檔案存放目錄 |
| SYSCONFDIR | my.cnf 讀取目錄 |
| MYSQL_UNIX_ADDR | Socket 檔案路徑 |
| ENABLED_LOCAL_INFILE | 允許 LOAD DATA LOCAL INFILE |
| EXTRA_CHARSETS=all | 編譯支援所有字元集 |
| DEFAULT_CHARSET | 預設字元集 utf8 |
| WITH_PARTITION_STORAGE_ENGINE | 啟用分區表支援 |
| WITH_SSL=system | 使用系統 OpenSSL |
make -j$(nproc) make install
提示:-j$(nproc) 可並行編譯加速,視 CPU 核心數調整。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf mkdir -p /var/lib/mysql chown -R mysql:mysql /var/lib/mysql
[client] port = 3306 socket = /tmp/mysqld.sock [mysql] no-auto-rehash [mysqld] user = mysql port = 3306 socket = /tmp/mysqld.sock basedir = /usr/local/mysql datadir = /var/lib/mysql open_files_limit = 10240 back_log = 600 max_connections = 3000 max_connect_errors = 6000 table_open_cache = 4096 external-locking = FALSE max_allowed_packet = 32M sort_buffer_size = 2M join_buffer_size = 2M thread_cache_size = 300 thread_concurrency = 8 query_cache_size = 64M query_cache_limit = 4M query_cache_min_res_unit = 2k default-storage-engine = InnoDB thread_stack = 192K transaction_isolation = READ-COMMITTED tmp_table_size = 256M max_heap_table_size = 256M slow_query_log = 1 slow_query_log_file = /usr/local/mysql/slow.log long_query_time = 2 log_bin = mysql-bin binlog_cache_size = 4M max_binlog_cache_size = 8M max_binlog_size = 512M expire_logs_days = 7 key_buffer_size = 256M read_buffer_size = 1M read_rnd_buffer_size = 16M bulk_insert_buffer_size = 64M myisam_sort_buffer_size = 128M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 myisam_recover = FORCE,BACKUP skip-name-resolve lower_case_table_names = 1 innodb_buffer_pool_size = 4G innodb_log_file_size = 512M innodb_log_files_in_group = 2 innodb_flush_log_at_trx_commit = 1 innodb_file_per_table = 1 innodb_flush_method = O_DIRECT [mysqldump] quick max_allowed_packet = 32M [mysqld_safe] log-error = /usr/local/mysql/error.log pid-file = /usr/local/mysql/mysqld.pid
註:上方 InnoDB 參數需依實體記憶體調整(innodb_buffer_pool_size 建議 60-70% 實體記憶體)。
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> /etc/profile source /etc/profile
/usr/local/mysql/scripts/mysql_install_db \ --basedir=/usr/local/mysql \ --datadir=/var/lib/mysql \ --user=mysql
service mysql start ps -ef | grep mysql mysql -uroot -p -e "SELECT VERSION();"
/usr/local/mysql/bin/mysql_secure_installation
依提示設定 root 密碼、移除匿名帳號、禁止 root 遠端登入、移除 test 資料庫。
libaio 缺失:yum install libaio-develmy.cnf 與啟動腳本 mysql.server 內 socket 參數一致。/var/lib/mysql、/usr/local/mysql 擁有者為 mysql:mysql。