MySQL系列(1):CentOS7編譯安裝MySQL5.7

引言

爲了方便後續調試學習源碼,先自己動手編譯一個Debug版本的MySQL。我這裏使用的環境是CentOS版的WSL。如果系統不是Win10沒有WSL,可以用虛擬機安裝CentOS,也可以在Docker中拉個CentOS鏡像創建實例。MySQL選擇5.7中當前最新的一個GA版本,即5.7.28。

下載源碼

我的WSL是自動root登錄的,用戶目錄爲/root。從MySQL官方的CDN中下載源碼,並解壓到用戶目錄下。我這裏放置的目錄爲/root/develop/mysql-5.7.28,其中mysql-5.7.28爲壓縮包裏自帶的文件夾。

wget https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-boost-5.7.28.tar.gz
tar -xzvf mysql-boost-5.7.28.tar.gz -C ~/develop

構建安裝

安裝依賴的工具,如果一開始不知道要裝哪個,可以先不裝,等到執行時少了某個命令,或者編譯出錯也會提示缺少什麼工具,這時再一個個補上。

yum install -y cmake gcc gcc-c++ gdb
yum install -y openssl-devel ncurses-devel
yum install -y bison

gcc/gcc-c++是C和C++的編譯器,cmake是構建工具,gdb是調試器,openssl-devel是TLS和SSL協議的開發包,ncurses-devel是字符終端顯示的開發包,bison是一個語法分析器生成器。

接下來可以開始編譯和安裝了。首先建個文件夾output來存放編譯過程產生的文件,方便管理。這也是使用cmake的好處,可以建多個文件夾,分別用不同的參數來構建。

cd ~/develop/mysql-5.7.28
mkdir output
cd output
cmake .. -DWITH_DEBUG=1 \
-DWITH_UNIT_TESTS=0 \
-DWITH_BOOST=../boost/boost_1_59_0

make -j 10
make install

WITH_DEBUG參數設置編譯模式是否是Debug,配置了這個參數,腳本會去設置CMAKE_BUILD_TYPE=Debug。WITH_UNIT_TESTS參數設置是否需要單元測試。boost庫爲C++標準庫提供了擴展功能,我們下的源碼中已自帶,需要用WITH_BOOST指定boost庫的路徑。由於編譯很慢,這裏設置10個線程加快編譯速度。

如果cmake過程中發生錯誤,需要刪掉CMakeCache.txt文件,然後重新運行cmake。

rm CMakeCache.txt

如果想要把編譯安裝過程中產生的文件都刪除掉,可以運行如下命令:

xargs rm < install_manifest.txt
rm -rf ../output

make install時會把安裝的文件記錄在install_manifest.txt,查看該文件可以發現,默認都放在/usr/local/mysql下,所以刪掉/usr/local/mysql和output兩個文件夾即可。

初始化

如果直接用root用戶初始化,不被允許會報錯。所以在初始化前,建個mysql組和不允許登錄的mysql用戶,並把我們編譯好的mysql目錄權限給它。

groupadd mysql
useradd -r -g mysql -s /bin/false mysql
chown -R mysql:mysql /usr/local/mysql

mysqld是MySQL的核心程序,加initialize參數初始化後會自動生成數據文件夾,一般是/usr/local/mysql/data,也會創建MySQL的root用戶,帶初始密碼,注意從控制檯中複製出來,第一次登錄需要使用。mysql_ssl_rsa_setup會創建SSL證書和RSA公私鑰。

/usr/local/mysql/bin/mysqld --initialize --user=mysql
/usr/local/mysql/bin/mysql_ssl_rsa_setup

mysqld --initialize --user=mysql執行後控制檯輸出的root密碼如下:

[Note] A temporary password is generated for root@localhost: haQ2Ql3gM+T1

這裏haQ2Ql3gM+T1即爲密碼,每次初始化都不一樣的值。接下來啓動mysqld,並用mysql客戶端連接,修改個好記的密碼就大功告成了。

/usr/local/mysql/bin/mysqld_safe --user=mysql &

mysqld_safe是一個腳本文件,會幫我們啓動mysqld。也可以直接啓動mysqld,但是需要指定的參數會多些。如果想用gdb調試,就只能通過mysqld了。

/usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql

修改密碼

下面登錄mysql,修改密碼爲123456。

/usr/local/mysql/bin/mysql -u root -p
SET PASSWORD = PASSWORD('123456');

因爲這裏編譯的目的是給後續調試使用,所以不設置服務自啓動。

關鍵詞

下載源碼;構建安裝;初始化;修改密碼


歡迎關注公衆號,獲取推送更方便,遇到問題來交流!

技術長跑

發佈了29 篇原創文章 · 獲贊 8 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章