怎么查看MySQL 源碼編譯了什么_Mysql 源碼編譯教程貼

題外話:這是一篇教程貼,不僅學的是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://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.27.tar.gz

2.安裝:

☆ 禁掉selinx

★ 使用下邊命令獲取selinux:

[root@centos ~]# getenforce

Disabled

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

Enforcing 開啟狀態

Permissive 臨時禁用

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

[root@centos ~]# setenforce 0[root@centos~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

★?檢查下是否修改正確

[root@centos ~]# getenforce

Permissive

[root@centos~]# cat /etc/selinux/config

確認里邊 SELINUX=disabled ?(selinux配置文件一定要確保修改正確,如果錯誤系統就無法正常啟動.)

☆ 創建mysql賬戶

groupadd mysql

useradd-g mysql mysql

☆?依賴包

yum install cmake wget gcc -y

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

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

[root@centos ~]# 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源碼包,并進入到解壓目錄

[root@centos ~]# tar xvf mysql-5.6.25.tar.gz

[root@centos~]# 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的配置文件(配置文件放哪里)

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

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

make

make install

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

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

☆ ?配置Mysql

★?進入到mysql的安裝目錄

[root@centos ~]#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.server start

☆ 修改$PATH

$PATH是什么?很多人都不清楚,到底做什么的?這里簡短的說一下,$PATH就是執行文件路徑的變量,當我們執行一個指令的時候,[mysql],系統會依據PATH的設定去每個PATH定義的目錄下搜尋文件名為mysql的可執行文件.如果在 PATH 定義的目錄中含有多個文件名為 ls 的可執行文件, 那么先搜尋到的同名文件先被執行!

[root@centos ~]#which mysql

/usr/bin/which: no mysql in()

沒有找到這個mysql從哪里找就是從PATH加載的這么多目錄里邊去找.

[root@centos ~]#echo $PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

這個是系統定義好的PATH目錄:

[root@centos ~]#sed -i '/export PATH/i\\PATH=$PATH:/usr/local/mysql/bin' .bash_profile

[root@centos ~]#source .bash_profile

直接將/usr/local/mysql/bin追加到PATH后邊,我使用sed,為了新手,如果你用vi可以自行編輯..

這樣就可以使用mysql

[root@centos ~]#which mysql

/usr/local/mysql/bin/mysql

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__STORAGE_ENGINE=1

如:

-DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_ARCHIVE_STORAGE_ENGINE=1

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

若想禁用某個引擎的支持:-DWITHOUT__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' 一個關于編譯環境的描述性注釋

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370583.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370583.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370583.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux mysql啟動_MySQL 安裝(二)

MySQL 安裝所有平臺的Mysql下載地址為&#xff1a;MySQL 下載 . 挑選你需要的 MySQL Community Server 版本及對應的平臺。Linux/UNIX上安裝MySQLLinux平臺上推薦使用RPM包來安裝MySQL&#xff0c;MySQL AB提供了以下RPM包的下載地址&#xff1a;MySQL - MySQL服務器。你需要該…

0524駝峰命名法,模態對話框

模態對話框 window.showModalDialog("url"&#xff0c;"向目標對話框傳的值"&#xff0c;"窗口特征參數") 打開模態對話框 模態對話框必須關掉才能對后端操作。 模塊對話框和窗口的區別是永遠置頂。 特征參數&#xff1a;用分號隔開&#xff0c;…

誰在偷你的記憶? 應用服務器版

您創建了一個了不起的應用程序。 您將其投入生產。 您會發現您沒有足夠的可用內存。 即使您的所有測量結果&#xff08;可能是借助我們的小型公用事業公司進行的測量 &#xff09;都表明您應該還不錯。 我們計劃發布一系列博客文章&#xff0c;研究堆消失的位置&#xff0c;并…

遺忘的html標簽

1 <span>x</span><sup>2</sup><span> y10</span> 2 <br> 3 <span>H</span><sub>2</sub><span>O</span> <sup> 標簽可定義上標文本。 包含在 <sup> 標簽和其結束標簽 …

Android四大組件之BroadcastReceiver

什么是BroadcastReceiver? BroadcastReceiver(廣播接收器)&#xff0c;顧名思義&#xff0c;是用來接收廣播的。Android內部實現了一套廣播通信機制&#xff0c;即在某個應用或某個組件注冊廣播接收器&#xff0c;接收特定類型的廣播。當別的應用或組件發送該類型的廣播時&…

mysql數據庫索引頁號為什么從3開始_MySQL數據庫快問快答

原標題&#xff1a;MySQL數據庫快問快答前言今天樓主給大家列一下關于數據庫幾個常見問題的要點&#xff0c;如果大家對其中的問題感興趣&#xff0c;可以自行擴展研究。1. UNION ALL 與 UNION 的區別UNION和UNION ALL關鍵字都是將兩個結果集合并為一個。UNION在進行表鏈接后會…

通過簡單的Spring方面擺脫null參數

什么是世界上最令人討厭的&#xff0c;同時也是最受歡迎的例外&#xff1f; 我敢打賭這是NullPointerException。 NullPointerException可以表示任何東西&#xff0c;從簡單的“ ups&#xff0c;我認為不能為空”到數小時和數天的第三方庫調試&#xff08;我敢于嘗試使用Doze…

java arraylist排序_最全Java集合筆記

集合概述什么是集合集合框架&#xff1a;用于存儲數據的容器。集合框架是為表示和操作集合而規定的一種統一的標準的體系結構。任何集合框架都包含三大塊內容&#xff1a;對外的接口、接口的實現和對集合運算的算法。接口&#xff1a;表示集合的抽象數據類型。接口允許我們操作…

【3】JVM-OutOfMemory異常重現

JVM中常見的OOM&#xff0c;那么如何通過自己編寫代碼產生這些OOM異常呢&#xff1f;通過寫代碼重現異常&#xff0c;是為了避免在工作中寫出有OOM BUG的代碼。之前雖然看過相關文章&#xff0c;但是沒自己寫過這些代碼&#xff0c;這次在編寫的實際過程中&#xff0c;由于和書…

CachedIntrospectionResults 初始化

轉載于:https://www.cnblogs.com/xiluhua/p/7862985.html

為什么有些內聯(行內)元素可以設置寬高?

為什么有些內聯&#xff08;行內&#xff09;元素如img、input可以設置寬高&#xff1f; 在說明之前我們先來了解一些定義。 塊級元素和內聯元素&#xff1a; ①塊級元素總是獨占一行&#xff0c;表現為另起一行開始&#xff0c;而且其后的元素也必須另起一行顯示。 寬度(w…

mongo數據庫和mysql數據庫的區別_Mongodb與mysql數據庫的區別

MySQLMongoDB說明mysqldmongod服務器守護進程mysqlmongo客戶端工具mysqldumpmongodump邏輯備份工具mysqlmongorestore邏輯恢復工具db.repairDatabase()修復數據庫mysqldumpmongoexport數據導出工具sourcemongoimport數據導入工具grant * privileges on *.* to …Db.addUser()Db…

在Eclipse中高效運行HTTP / REST集成測試

最近&#xff0c;我有機會使用由我親愛的Holger Staudacher編寫的OSGi-JAX-RS-Connector庫。 通過連接器&#xff0c;您可以通過將Path注釋的類型注冊為OSGi服務來輕松發布資源-實際上&#xff0c;它工作得很好。 對于我來說&#xff0c;使用普通的JUnit測試編寫驅動的服務類測…

Eclipse安裝TestNG插件

Eclipse安裝TestNG插件 TestNG是什么? TestNG按照其文檔的定義是&#xff1a; TestNG是一個測試框架&#xff0c;其靈感來自JUnit和NUnit的&#xff0c;但引入了一些新的功能&#xff0c;使其功能更強大&#xff0c;使用更方便。 TestNG是一個開源自動化測試框架;TestNG表示下…

basicdatasourcefactory mysql_Java基礎-DBCP連接池(BasicDataSource類)詳解

Java基礎-DBCP連接池(BasicDataSource類)詳解作者&#xff1a;尹正杰版權聲明&#xff1a;原創作品&#xff0c;謝絕轉載&#xff01;否則將追究法律責任。實際開發中“獲得連接”或“釋放資源”是非常消耗系統資源的兩個過程&#xff0c;為了解決此類性能問題&#xff0c;通常…

生物神經網絡衍生出的算法

一個生物神經網絡的基本結構&#xff1a; 生物神經網絡由大量神經元組成&#xff0c;這些神經元之間通過突觸相互連接。神經元可以接收來自其他神經元的信號&#xff0c;并根據信號的強度和類型來調整自己的輸出信號。這種神經元之間的相互連接和信號傳遞形成了生物神經網絡的基…

echart實例數據 本地加載_JVM 類加載概述

來源&#xff1a;SegmentFault 思否社區作者&#xff1a;又壞又迷人JVM簡介JVM是Java Virtual Machine(Java虛擬機)的縮寫&#xff0c;JVM是一種用于計算設備的規范&#xff0c;它是一個虛構出來的計算機&#xff0c;是通過在實際的計算機上仿真模擬各種計算機功能來實現的。Ja…

JPA / Hibernate:基于版本的樂觀并發控制

本文是Hibernate和JPA中基于版本的樂觀并發控制的簡介。 這個概念已經很老了&#xff0c;上面已經寫了很多東西&#xff0c;但是無論如何我都看到了它被重新發明&#xff0c;誤解和濫用。 我在編寫它只是為了傳播知識&#xff0c;并希望引起人們對并發控制和鎖定的興趣。 用例…

高可用集群搭建

高可用集群搭建  創建hadoop賬戶 創建hadoop賬戶&#xff08;#注意&#xff0c;接下來的操作均在hadoop賬戶下運行&#xff09; # useradd hadoop # passwd hadoopsu - hadoopmkdir soft disk1 disk2mkdir -p disk{1,2}/dfs/{dn,nn}mkdir -p disk{1,2}/nodemgr/local 將本地目…

scrt如何切換成英文版_英文版SecureCRT顯示亂碼解決

英文版SecureCRT顯示亂碼解決系統環境&#xff1a;CentOS&#xff15;.&#xff16;以前Linux都是默認安裝在英文環境下&#xff0c;用英文版的SecureCRT查看系統內容輸出的也都是英文的&#xff0c;不會出現亂碼問題。今天同事在服務器安裝時默認選擇了簡體中文&#xff0c;這…