1. 程式人生 > >mysql-5.5原始碼編譯安裝(附引數對照表)

mysql-5.5原始碼編譯安裝(附引數對照表)

自5.5以後的版本都需要cmake編譯安裝,so...先安裝cmake編譯器

安裝必要的元件
yum -y install cmake
yum -y install bison
yum -y install ncurses-devel
 
新增賬戶
groupadd mysql
useradd mysql -g mysql -M -s /bin/false
 
編譯安裝
tar zxvf mysql-5.5.24.tar.gz
cd mysql-5.5.24
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_USER=mysql \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_DEBUG=0 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 
 
make -j 2 && make install
注:-j 用來指定CPU核心數,可加快編譯速度,不加也可以
 
以下為附加步驟,如果你想在這臺伺服器上執行MySQL資料庫,則執行以下兩步。
如果只是希望讓PHP支援MySQL擴充套件庫,能夠連線其他伺服器上的MySQL資料庫,以下兩步無需執行。
 
1、以mysql使用者帳號的身份建立資料表:
chown -R mysql.mysql /usr/local/mysql
cp support-files/my-large.cnf /etc/my.cnf
/usr/local/mysql/scripts/mysql_install_db \
--defaults-file=/etc/my.cnf \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data/ \
--user=mysql
 
2、加入開機自啟動;並啟動mysql
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 755 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
service mysqld start


從mysql5.5起,mysql原始碼安裝開始使用cmake。下面是 mysql 5.5 與以前的引數對照:

configure Command CMake Command
./configure cmake .
./configure --help cmake . -LH or ccmake .
Parameter configure Option CMake Option CMake Notes
Installation base directory --prefix=/usr -DCMAKE_INSTALL_PREFIX=/usr
mysqld directory --libexecdir=/usr/sbin -DINSTALL_SBINDIR=sbin interpreted relative to prefix
Data directory --localstatedir=/var/lib/mysql -DMYSQL_DATADIR=/var/lib/mysql
Config directory (for my.cnf) --sysconfdir=/etc/mysql -DSYSCONFDIR=/etc/mysql
Plugin directory --with-plugindir=/usr/lib64/mysql/plugin -DINSTALL_PLUGINDIR=lib64/mysql/plugin interpreted relative to prefix
Man page directory --mandir=/usr/share/man -DINSTALL_MANDIR=share/man interpreted relative to prefix
Shared-data directory --sharedstatedir=/usr/share/mysql -DINSTALL_SHAREDIR=share this is where aclocal/mysql.m4 should be installed
Library installation directory --libdir=/usr/lib64/mysql -DINSTALL_LIBDIR=lib64/mysql interpreted relative to prefix
Header installation directory --includedir=/usr/include/mysql -DINSTALL_INCLUDEDIR=include/mysql interpreted relative to prefix
Info doc directory --infodir=/usr/share/info -DINSTALL_INFODIR=share/info interpreted relative to prefix
Parameter configure Option CMake Option CMake Notes
readline library --with-readline -DWITH_READLINE=1
SSL library --with-ssl=/usr -DWITH_SSL=system
zlib library --with-zlib-dir=/usr -DWITH_ZLIB=system
libwrap library --without-libwrap -DWITH_LIBWRAP=0
Parameter configure Option CMake Option CMake Notes
TCP/IP port number --with-tcp-port-=3306 -DMYSQL_TCP_PORT=3306
UNIX socket file --with-unix-socket-path=/tmp/mysqld.sock -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock
Enable LOCAL for LOAD DATA --enable-local-infile -DENABLED_LOCAL_INFILE=1
Extra charsets --with-extra-charsets=all -DEXTRA_CHARSETS=all default is "all"
Default charset --with-charset=utf8 -DDEFAULT_CHARSET=utf8
Default collation --with-collation=utf8_general_ci -DDEFAULT_COLLATION=utf8_general_ci
Build the server --with-server none
Build the embedded server --with-embedded-server -DWITH_EMBEDDED_SERVER=1
libmysqld privilege control --with-embedded-privilege-control none always enabled?
Install the documentation --without-docs none
Big tables --with-big-tables, --without-big-tables none tables are big by default
mysqld user --with-mysqld-user=mysql -DMYSQL_USER=mysql mysql is the default
Debugging --without-debug -DWITH_DEBUG=0 default is debugging disabled
GIS support --with-geometry none always enabled?
Community features --enable-community-features none always enabled
Profiling --disable-profiling -DENABLE_PROFILING=0 enabled by default
pstack --without-pstack none pstack is removed
Assembler string functions --enable-assembler none
Build type --build=x86_64-pc-linux-gnu no equivalent unneeded?
Cross-compile host --host=x86_64-pc-linux-gnu no equivalent unneeded?
Client flag --with-client-ldflags=-lstdc++ none unneeded
Client flag --enable-thread-safe-client none unneeded, clients are always thread safe
Comment --with-comment='string' -DWITH_COMMENT='string'
Shared/static binaries --enable-shared --enable-static none there is only DISABLE_SHARED
Memory use --with-low-memory none unneeded

1. 命令語法:

重新編譯時,需要清除舊的物件檔案和快取資訊
# make clean
# rm -f  CMakeCache.txt

2.安裝選項

CMAKE_INSTALL_PREFIX值是安裝的基本目錄,其他cmake選項值是不包括字首,是相對路徑名,絕對路徑包括 CMAKE_INSTALL_PREFIX路徑。如-DINSTALL_SBINDIR=sbin的絕對路徑是/usr/local/mysql /sbin

3.儲存引擎選項
mysql儲存引擎是外掛式的,因此外掛控制選項可以指定那個儲存引擎安裝。
configure編譯外掛選項--with-plugins=csv,myisam,myisammrg,heap,innobase,
archive,blackhole在cmake中沒有直接對應的相同選項。對於csv,myisam,myisammrg,heap在cmake中是不需要明確指定儲存引擎的名稱,因為它們是強制性安裝。

可以使用以下選擇來安裝innodb,archive,blackhole儲存引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_ARCHIVE_STORAGE_ENGINE=1

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

(1可以使用on代替)

如果既不是-DWITH_<ENGINE>_STORAGE_ENGINE 也不是 -DWITHOUT_<ENGINE>_STORAGE_ENGINE 來指定儲存引擎,該儲存引擎將安裝成共享模組式的。如果不是共享模組式的將排除在外。共享模組安裝時必須使用INSTALL PLUGIN語句或--plugin-load才可以使用。

4.其他選項
之前MySQL的編譯選項大多數都支援。新舊版本之間的安裝選項對映成大寫字母,刪除選項前面破折號,中間字元間的破折號替換成下劃線。如:
--with-debug => WITH_DEBUG=1

--with-embedded-server => WITH_EMBEDDED_SERVER

5.除錯配置過程
使用configure編譯完將生成config.log和config.status檔案。
使用cmake編譯完在CMakeFiles目錄下生成CMakeError.log 和CMakeOutput.log檔案。

編譯引數參考:

BUILD_CONFIG   採用官方發行版一致的編譯引數
CMAKE_BUILD_TYPE 指定產品編譯說明資訊   RelWithDebInf
CMAKE_INSTALL_PREFIX 指定MySQL安裝路徑  /usr/local/mysql
CPACK_MONOLITHIC_INSTALL是否建立單個安裝包檔案 OFF   5.5.7
DEFAULT_CHARSET  MYSQL 預設字符集  latin1   5.5.7
DEFAULT_COLLATION MYSQL 預設排序字符集  latin1_swedish_ci 5.5.7
ENABLE_DEBUG_SYNC 是否啟用同步除錯功能  ON   5.5.7
ENABLE_DOWNLOADS 是否下載可選檔案  OFF   5.5.7
ENABLE_DTRACE  是否包含 DTrace 支援     5.5.7
ENABLE_GCOV  是否包含 Gcov 支援     5.5.14
ENABLED_LOCAL_INFILE 是否啟用本地 LOAD DATA INFILE OFF   5.5.7
ENABLED_PROFILING 是否啟用程式碼查詢分析  ON   5.5.7
INSTALL_BINDIR  MySQL 主執行檔案目錄  PREFIX/bin  5.5.7
INSTALL_DOCDIR  文件安裝路徑   PREFIX/docs  5.5.7
INSTALL_DOCREADMEDIR 自述檔案目錄   PREFIX   5.5.7
INSTALL_INCLUDEDIR 標頭檔案目錄   PREFIX/include  5.5.7
INSTALL_INFODIR  關於資訊檔案目錄  PREFIX/docs  5.5.7
INSTALL_LAYOUT  選擇預定義的安裝  STANDALONE  5.5.7
INSTALL_LIBDIR  庫檔案目錄   PREFIX/lib  5.5.7
INSTALL_MANDIR  手冊頁面目錄   PREFIX/man  5.5.7
INSTALL_MYSQLSHAREDIR 共享資料目錄   PREFIX/share  5.5.7
INSTALL_MYSQLTESTDIR mysql-test 目錄   PREFIX/mysql-test 5.5.7
INSTALL_PLUGINDIR 外掛目錄   PREFIX/lib/plugin 5.5.7
INSTALL_SBINDIR  伺服器超級使用者執行檔案目錄 PREFIX/bin  5.5.7
INSTALL_SCRIPTDIR 指令碼目錄   PREFIX/scripts  5.5.7
INSTALL_SHAREDIR aclocal/mysql.m4 安裝目錄 PREFIX/share  5.5.7
INSTALL_SQLBENCHDIR sql-bench 效能測試工具目錄 PREFIX   5.5.7
INSTALL_SUPPORTFILESDIR 擴充套件支援檔案目錄  PREFIX/support-files 5.5.7
MYSQL_DATADIR  資料庫存放目錄      5.5.7
MYSQL_MAINTAINER_MODE 是否啟用MySQL的維護環境  OFF   5.5.7
MYSQL_TCP_PORT  TCP/IP 埠號   3306   5.5.7
MYSQL_UNIX_ADDR  Unix Socket 套接字檔案  /tmp/mysql.sock  5.5.7
SYSCONFDIR  選項配置檔案目錄     5.5.7
WITH_COMMENT  編譯環境發表評論     5.5.7
WITH_DEBUG  是否包括除錯支援  OFF   5.5.7
WITH_EMBEDDED_SERVER 是否要建立嵌入式伺服器  OFF   5.5.7
WITH_xxx_STORAGE_ENGINE 靜態編譯xxx 儲存引擎到伺服器    5.5.7
WITH_EXTRA_CHARSETS 額外的字符集,包括  all   5.5.7
WITH_LIBWRAP  是否包括支援libwrap(TCP包裝) OFF   5.5.7
WITH_READLINE  使用捆綁的readline  OFF   5.5.7
WITH_SSL  是否支援SSL  no   5.5.7
WITH_ZLIB  是否支援Zlib  system   5.5.7
WITHOUT_XXX_STORAGE_ENGINE 不編譯XXX儲存引擎到資料庫