Mysql 源碼編譯教程貼

來源:互聯網
上載者:User

標籤:

題外話:這是一篇教程貼,不僅學的是mysql的編譯,還是一些編譯的知識.我也是一個菜鳥,寫一些感悟和心得,有什麼問題可以批評指正,謝謝!

如果只是為了安裝請移到我的另一篇安裝貼: Mysql安裝貼

環境:
  OS: CentOS 6.6x64 mini
  mysql: mysql-5.6.25
1. mysql 下載:
  http://dev.mysql.com/downloads/mysql/
  說明:這個網站有時候JS被牆,你選擇了Source Code會沒有反應,所以可以考慮翻翻翻翻翻翻Q或者直接點下邊的連結
  : http://101.44.1.118/files/90110000038859AB/nchc.dl.sourceforge.net/project/mysql.mirror/MySQL%205.6.25/mysql-5.6.25.tar.gz

2.安裝:

  ☆ 禁掉selinx

    ★ 使用下邊命令擷取selinux:      

[[email protected] ~]# getenforce Disabled

         Disabled 已經禁用了,可以跳過這步了

         Enforcing 開啟狀態

         Permissive 臨時禁用

    ★ 使用下邊命令禁用selinux (第一條臨時禁用,第二條永久禁用)     

[[email protected] ~]# setenforce 0[[email protected] ~]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config

    ★ 檢查下是否修改正確

[[email protected] ~]# getenforce Permissive [[email protected] ~]# cat /etc/selinux/config

        確認裡邊 SELINUX=disabled  (selinux設定檔一定要確保修改正確,如果錯誤系統就無法正常啟動.)

  ☆ 建立mysql賬戶  

groupadd mysqluseradd -g mysql mysql

  ☆ 依賴包 

yum install cmake wget  gcc -y

        Cmake: 因為mysql 5.6支援cmake安裝所以我們採用cmake安裝.

        wget是linux下載工具,下邊就是下載mysql源碼包(下載到目前的目錄下) 

[[email protected] ~]# wget http://101.44.1.118/files/90110000038859AB/nchc.dl.sourceforge.net/project/mysql.mirror/MySQL%205.6.25/mysql-5.6.25.tar.gz

  ☆ 解壓mysql源碼包,並進入到解壓目錄        

[[email protected] ~]# tar xvf  mysql-5.6.25.tar.gz[[email protected] ~]# cd mysql-5.6.25 

  ☆ 配置        

 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

          -DCMAKE_INSTALL_PREFIX= 指向mysql安裝目錄(安裝在哪裡)

          -DMYSQL_DATADIR= mysql的資料目錄

          -DSYSCONFDIR= Mysql的設定檔(設定檔放哪裡)

          這裡配置會出錯,請移步後邊的廢話部分,帶你裝逼帶你飛..

          

  ☆  編譯並安裝(過程比較長,耐心等待)        

makemake install 

         在群裡發現很多人在編譯的時候容易出錯,而且配置編譯完了也不能確定到底有沒有操作成功.雖然下文我有解釋,但是我還是要提一下linux下有個$?.. 執行完了不確定緊接著執行:echo $?

         如果返回 0 說明上條命令執行成功,非0的任意數代表有錯誤.

  ☆  配置Mysql

    ★ 進入到mysql的安裝目錄

[[email protected] ~]#cd /usr/local/mysql

    ★ 設定許可權    

chown -R mysql .chgrp -R mysql .

★ 初始化資料庫

scripts/mysql_install_db --user=mysql

★ 設定許可權

chown -R root .chown -R mysql data

★ 啟動資料庫

bin/mysqld_safe --user=mysql &

    很多朋友會說寫個mysql的啟動指令碼,幹嘛要自己寫,mysql已經提供了:

cp support-files/mysql.server /etc/init.d/mysql.server

這樣就可以了 service mysql start

3.廢話篇:

  教程篇,就得有廢話...廢話開始:

  源碼的安裝就在編譯這裡,配置編譯,配置什麼?怎麼配置?如何擷取,最好的方法就是官方文檔,配置就是擴充一些功能,官方文檔有解釋每一個配置項的作用和預設是否被配置進去.還有就是源碼包裡有個INstall-Source.txt.寫的很詳細有幾千行,在5000多行的地方<2.9 Installing MySQL from Source>有說如何安裝...

  配置是配置,編譯是編譯.安裝是安裝. 配置是用的cmake,編譯是make..安裝是make install.得確保每一步操作成功,進行下一步操作,怎麼確認?看配置結束的提示,或者配置結束完緊接著輸入echo $? 如果返回0 就說明操作成功了,非零就是有問題.

  編譯不一定能保證100%不出問題,教程貼就是教你改怎麼編譯,說一些自己的心得.其他的錯誤就得靠經驗了,沒有辦法把整個錯誤都列出來.

  如果你按我操作的步驟肯定編譯會出錯:

    錯誤資訊的部分:

      CMake Error: your C compiler: "CMAKE_C_COMPILER-NOTFOUND" was not found. Please set CMAKE_C_COMPILER to a valid compiler path or name.

      CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found. Please set CMAKE_CXX_COMPILER to a valid compiler path or name.

     其實看出來是C的問題了,C是幹嘛的?這個就要增加自己的知識儲備了,如果不確定自己複製百度下,多看看解決方案: 

yum install gcc -y

    再來(再次執行CMake),裝完發現第二個Cxx的報錯沒有解決.那就是C++的問題了   

yum install gcc-c++

    再執行,發現上邊的錯誤沒有了,但是又有新的錯誤了

    關鍵字:no suitable type found 百度百度   

yum install ncurses-devel

    問題沒解決,後來發現是刪除CMakeCache.txt 巨汗...

    rm -rf CMakeCache.txt

    重新執行Cmake的命令

 

    編譯慢慢等..

    中間有很多 found, not found

    就是說有些依賴找到了,有些依賴沒有被找到.如果沒有報錯說明都不是致命的錯誤,可以以後某些功能沒裝上(沒有裝上怎麼不辦?重新設定編譯安裝加上自己需要的功能,這些功能需要裝什麼可以看官方文檔,或者網上找找..)

接下來編譯:

make

    安裝:    

make install

  確定執行成功,返回到配置Mysql,接著配置Mysql

     好了到這裡了,有什麼錯誤的地方,有什麼問題可以提出來...

  順便貼上網上找到配置項的解釋:

  

-DCMAKE_INSTALL_PREFIX= 指向mysql安裝目錄
-DINSTALL_SBINDIR=sbin 指向可執行檔目錄(prefix/sbin)
-DMYSQL_DATADIR=/var/lib/mysql 指向mysql資料檔案目錄(/var/lib/mysql)
-DSYSCONFDIR=/etc/mysql 指向mysql設定檔目錄(/etc/mysql)
-DINSTALL_PLUGINDIR=lib/mysql/plugin 指向外掛程式目錄(prefix/lib/mysql/plugin)
-DINSTALL_MANDIR=share/man 指向man文檔目錄(prefix/share/man)
-DINSTALL_SHAREDIR=share 指向aclocal/mysql.m4安裝目錄(prefix/share)
-DINSTALL_LIBDIR=lib/mysql 指向對象程式碼程式庫目錄(prefix/lib/mysql)
-DINSTALL_INCLUDEDIR=include/mysql 指向標頭檔目錄(prefix/include/mysql)
-DINSTALL_INFODIR=share/info 指向info文檔存放目錄(prefix/share/info)
prefix官方推薦設為/usr
Storage Engine相關
類型csv,myisam,myisammrg,heap,innobase,archive,blackhole
若想啟用某個引擎的支援:-DWITH_<ENGINE>_STORAGE_ENGINE=1
如:
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
若想禁用某個引擎的支援:-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
Library相關
-DWITH_READLINE=1 啟用readline庫支援(提供可編輯的命令列)
-DWITH_SSL=system 啟用ssl庫支援(安全套接層)
-DWITH_ZLIB=system 啟用libz庫支援(zib、gzib相關)
-DWTIH_LIBWRAP=0 禁用libwrap庫(實現了通用TCP封裝的功能,為網路服務守護進程使用)
-DMYSQL_TCP_PORT=3306 指定TCP連接埠為3306
-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock 指定mysql.sock路徑
-DENABLED_LOCAL_INFILE=1 啟用本機資料匯入支援
-DEXTRA_CHARSETS=all 啟用額外的字元集類型(預設為all)
-DDEFAULT_CHARSET=utf8 指定預設的字元集為utf8
-DDEFAULT_COLLATION=utf8_general_ci 設定預設定序(utf8_general_ci快速/utf8_unicode_ci準確)
-DWITH_EMBEDDED_SERVER=1 編譯嵌入式伺服器支援
-DMYSQL_USER=mysql 指定mysql使用者(預設為mysql)
-DWITH_DEBUG=0 禁用debug(預設為禁用)
-DENABLE_PROFILING=0 禁用Profiling分析(預設為開啟)
-DWITH_COMMENT=‘string‘ 一個關於編譯環境的描述性注釋

Mysql 源碼編譯教程貼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.