歡迎您光臨本站 註冊首頁

源碼編譯安裝MySQL8.0.20的詳細教程

←手機掃碼閱讀     sl_ivan @ 2020-06-10 , reply:0

在上篇文章給大家介紹了:

MySQL8.0.20安裝教程及其安裝問題詳細教程  https://www.jb51.net/article/186202.htm

mysql8.0.20下載安裝及遇到的問題(圖文詳解)  https://www.jb51.net/article/186208.htm

CentOS7安裝Mysql8.0.20步驟:

https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-20.html

1 概述

本文章主要講述瞭如何從源碼編譯安裝MySQL社區版8.0.20,首先會介紹一些編譯安裝的相關知識,然後開始編譯安裝

2 源碼編譯安裝的相關知識

2.1 make與configure

make是一個編譯的命令,會在當前的目錄下尋找Makefile這個文件,Makefile文件記錄了源代碼如何編譯的詳細信息。而configure是由軟件開發商編寫的一個檢測程序檢測用戶的開發環境,檢測完畢後生成Makefile文件。通常,configure會檢測如下內容:

  • 是否具有合適的編譯器

  • 是否具有所需函數庫以及其他依賴

  • 是否兼容本系統

  • 是否存在內核頭文件

2.2 Tarball文件

Tarball文件其實就是將源代碼以tar打後壓縮的文件。通常使用gzip進行壓縮,一般擴展名為.tar.gz或.tgz,不過由於bzip2以及xz等技術壓縮效果比gzip好,因此文件名也會變成擴展名也會變成.tar.bz2或.tar.xz之類的。通常一個Tarball文件有:

  • 源碼

  • 檢測文件(configure/config)

  • 說明(README/INSTALL)

2.3 源碼編譯安裝相關組件

2.3.1 編譯器

需要有編譯器才能進行編譯操作,通常使用的是gcc。

2.3.2 make+autoconfig

以Tarball形式發佈的軟件,為了簡化編譯流程,通常需要make來根據目標文件文件的依賴性進行編譯,但是由於make需要Makefile,因此需要autoconfig生成Makefile。

2.3.3 函數庫

需要內核提供的庫以及相關的include文件。

2.4 靜態庫與動態庫

函數庫分為動態庫與靜態庫兩種類型,絕大部分放在/lib與/lib64中。

2.4.1 靜態庫

擴展名為.a,編譯時會直接整合到執行程序中,所以利用靜態庫生成的文件會比較大一些,編譯後的可執行文件可以直接運行,無需依賴外部函數庫。另外升級難度較大,因為是直接整合進程序中,升級了靜態庫的話需要重新編譯。

2.4.2 動態庫

擴展名為.so,在編譯時不像靜態庫一樣,動態庫在程序中只有一個指針,當可執行程序需要用到函數庫的功能時,才會讀取函數庫來使用,生成的可執行文件會比較小一點,但是不能獨立執行編譯出來的程序。另外升級比較方便,不需要重新編譯,因為執行文件會直接指向新的函數庫文件。

2.5 編譯安裝的一般步驟

  • (1)獲取源碼:一般使用wget或curl或從瀏覽器下載。

  • (2)查看幫助文件:解壓後查看INSTALL或README等文件相關內容

  • (3)安裝依賴:根據官網文檔或上一步中得到的信息安裝依賴

  • (4)生成Makefile:一般使用configure/config進行配置,檢測操作環境,指定安裝位置,開啟/關閉對應的功能,指定相關庫位置等,確定依賴關係等,一般需要使用�Chelp獲取選項幫助,指定對應選項後配置並生成Makefile

  • (5)編譯:實際編譯步驟,一個簡單的make命令,實際包含了頭文件預編譯,預處理,編譯與連接步驟

  • (6)安裝:make install,這一步實際進行安裝與操作系統連接兩個步驟

注意,以上步驟都是有順序的,而且前一個步驟執行失敗則後一個步驟也不能執行,也就是說需要前一個步驟執行成功才能進行下一步的操作。完成以上六步就能編譯安裝了,一般需要進行一些後續處理,比如,添加可執行文件路徑到PATH,添加頭文件與庫文件到/usr/include與/etc/ld.so.conf.d中,添加聯機幫助文件到/etc/man_db.conf中。

2.6 編譯安裝前的心理準備

這裡是最後的提示了,未安裝之前還可以ctrl+w關閉本頁面,避免無數的痛苦。
 編譯安裝最常見的問題就是版本與依賴的問題,版本問題容易處理,可以通過包管理器進行升級或者手動升級,至於依賴問題,包管理器安裝的話很容易,編譯安裝的話會非常頭疼,因為不知道某個依賴下面還需要安裝多少個依賴。
 所以,需要準備充足的時間,還有充分的耐心,去解決無數的問題,才能成功進行編譯安裝MySQL與Workbench這種大型軟件。
 不廢話了,開始吧。

3 安裝MySQL

3.1 安裝依賴

MySQL所需依賴如下:

  • cmake

  • make(推薦3.75以上)

  • 編譯器(GCC5.3+或Clang4.0+或XCode9+或Developer Studio12.6+或Visual Studio2017)

  • SSL庫(默認使用系統的OpenSSL)

  • Boost C++庫,需要用來構建但不需要使用,無需安裝,源碼即可

  • ncurses庫

  • bison2.1+

  • git

3.2 包管理器安裝

筆者的Debian系,使用apt即可:

  sudo apt-get install -y bison   git hostname   libncurses-dev   libssl-dev make   openssl pkg-config   doxygen cmake make

 

RedHat8.x:

  sudo yum install -y bison bzip2 git hostname ncurses-devel   openssl openssl-devel pkgconfig tar wget zlib-devel   doxygen diffutils rpcgen make libtirpc-devel cmake gcc

 

RedHat7.x:

  sudo yum install -y bison bzip2 git hostname ncurses-devel   openssl openssl-devel   pkgconfig tar wget zlib-devel   doxygen cmake gcc

 

其他自行搜索。

3.2 編譯安裝

若不想用包管理器安裝,可以使用編譯安裝的方式。
 歡迎來折騰。

3.2.1 安裝cmake

  tar -zxvf cmake-3.17.2.tar.gz  cd cmake-3.17.2  ./bootstrap --prefix=/usr/local/cmake  make clean   make -j 6 #6為CPU核數,自定義修改,若失敗請使用make  make test  sudo make install

 

3.2.2 安裝make

沒有編譯器的情況下無法編譯安裝,使用軟件包安裝即可,筆者的Debian系,直接使用apt:

  sudo apt install make

 

3.2.3 安裝gcc

  tar -xvf gcc-9.3.0.tar.xz  cd gcc-9.3.0  ./contrib/download_prerequisites  mkdir build  cd build  ../configure --prefix=/usr/local/gcc -enable-checking=release -disable-multilib   make clean   make -j 6  make test  sudo make install  sudo ln -sv /usr/local/gcc/include /usr/include/gcc  #/etc/ld.so.conf.d/gcc.conf加入以下內容  /usr/local/gcc/lib  /usr/local/gcc/lib64

 

3.2.4 安裝openssl

  tar -zxvf openssl-1.1.1g.tar.gz  cd openssl-1.1.1g  ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl/ssl  #prefix為安裝位置,默認/usr/local  #openssldir為配置文件位置,同時存放證書與密鑰對  make clean   make -j 6  make test  sudo make install  sudo ln -sv /usr/local/openssl/include /usr/include/openssl  #/etc/ld.so.conf.d/openssl.conf加上以下內容  /usr/local/openssl/lib

 

3.2.5 下載boost

官網戳這裡。
 需要的版本為1.70.0。目前最新的版本為1.73.0,理論上來說更新的版本應該可以,這裡下載的是1.70.0。如果不手動下載boost庫的話可以在使用cmake生成Makefile時設置DDOWNLOAD_BOOST為1進行下載。

在這裡插入圖片描述

下載後解壓既可。

  tar -xvf boost_1_70_0.tar.bz2

 

3.2.6 安裝ncurses

  tar -zxvf ncurses-6.2.tar.gz  cd ncurses-6.2  ./configure --prefix=/usr/local/ncurses  make -j 6  sudo make install    sudo ln -sv /usr/local/ncurses/include /usr/include/ncurses  #/etc/ld.so.conf.d/ncurses.conf加入  /usr/local/ncurses/lib

 

3.2.7 安裝bison

  tar -xvf bison-3.4.tar.xz  cd bison-3.4  ./configure --prefix=/usr/local/bison  make -j 6  sudo make install  #/etc/ld.so.conf.d/bison.conf加入  /usr/local/bison/lib

 

3.2.8 安裝git

  tar -xvf git-2.26.2.tar.xz  cd git-2.26.2  ./configure --prefix=/usr/local/git   --with-openssl=/usr/local/openssl   --with-libpcre2=/usr/local/pcre2   --with-curl=/usr/local/curl   --with-expat=/usr/local/expat   --with-iconv=/usr/local/iconv   --with-editor=/usr/bin/vim   --with-zlib=/usr/local/zlib   --with-tcltk=/usr/local/tcl  make all doc info  sudo make install install-doc install-html install-info

 

3.2.9 後續處理

修改PATH:

  #在~/.bash_profile 或 ~/.bashrc加入  export PATH=$PATH:  /usr/local/cmake/bin:  /usr/local/gcc/bin:  /usr/local/openssl/bin:  /usr/local/bison/bin:  /usr/local/ncurses/bin:  /usr/local/git/bin:

 

使動態庫生效:

  ldconfig

 

權限不足請加sudo。

3.3 下載MySQL社區版

官網這裡。

在這裡插入圖片描述

這裡不知道第一個與第二個有什麼區別,因為筆者兩個都試過都能編譯安裝成功。雖然上面寫著第二個帶Boost頭,但是貌似沒什麼用。這裡用的是第一個。
 校驗(可選):

  md5sum mysql-boost-8.0.20.tar.gz

 

在這裡插入圖片描述

3.4 生成Makefile

  sudo cmake ..   -DDEFAULT_CHARSET=utf8mb4   -DDEFAULT_COLLATION=utf8mb4_unicode_ci  #  -DENABLED_LOCAL_INFILE=ON   -DWITH_SSL=system   -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/server   -DMYSQL_DATADIR=/usr/local/mysql/data   -DMYSQL_TCP_PORT=3306   -DDOWNLOAD_BOOST=0   -DWITH_BOOST=~/Desktop/boost

 

  • DDEFAULT_CHARSET:指定默認字符集為utf8mb4,因為歷史遺留問題,MySQL中的utf8不是真正的utf8,而是閹割版的,最長只有三個字節,當遇到四個字節的utf8編碼時,會導致存儲異常。從5.5.3開始,使用utf8mb4實現完整的utf8。

  • DDEFAULT_COLLATION:排序規則,默認為utf8mb4_0900_ai_ci,屬於utf8mb4_unicode_ci的一種。0900指的是Unicode校對算法版本,ai是指口音不敏感(as表示敏感),ci指不區分大小寫(cs表示區分)。utf8mb4_unicode_ci表示基於標準的的Unicode來排序和比較,能夠在各種語言之間精確排序,而utf8mb4_general_ci遇到某些特殊的字符集時排序結果可能不一致,準確性較差,但是性能較好,比較和排序時候更快。

  • DENABLED_LOCAL_INFILE表示能否使用load data命令。

  • DWITH_SSL表示使用系統的SSL庫,若不使用系統的請自定義路徑。

  • DCMAKE_INSTALL_PREFIX:MySQL安裝目錄。

  • DMYSQL_DATADIR:MySQL數據目錄,初始時為空。

  • DMYSQL_TCP_PORT:端口,默認3306。

  • DDOWNLOAD_BOOST:取值0或1,是否下載Boost庫。

  • DWITH_BOOST:若不下載Boost庫的話,是本地Boost庫的位置,若下載Boost表示下載位置。

其他更多參數請使用

  sudo cmake .. -LH

 

查看。

3.5 編譯與安裝

  sudo make

 

  sudo make -j n

 

筆者試過了make -j 6,失敗,無奈換成了make。
 make的速度和make -j還是很大差距的。
 編譯好之後,建議測試一下:

  make test

 

然後安裝:

  sudo make install

 

3.6 後續配置

3.6.1 用戶組與用戶

新建用戶組與用戶,同時修改用戶數據目錄權限:

  sudo groupadd mysql  sudo useradd -r -g mysql -s /bin/false mysql  sudo chown mysql:mysql /usr/local/mysql/data  sudo chmod 750 /usr/local/mysql/data

 

數據目錄根據需要修改,若後面出現不可寫錯誤請把權限改為777。

3.6.2 配置文件

配置文件為my.cnf,可以放在

  /etc/  /etc/mysql/  安裝目錄/etc/  ~/

 

下,讀取順序從上到下。筆者安裝後默認在/etc/mysql/my.cnf,這個是全局配置,~/.my.cnf是用戶特定配置,這裡直接修改/etc/mysql/my.cnf:

  [client-server]    # Import all .cnf files from configuration directory  !includedir /etc/mysql/conf.d/  !includedir /etc/mysql/mariadb.conf.d/    [mysqld]  port=3306  basedir=/usr/local/mysql/server  datadir=/usr/local/mysql/data  character-set-server=utf8mb4  [mysql]  default-character-set=utf8mb4  [client]  port=3306  default-character-set=utf8mb4

 

其中[mysqld]下面是新添加的字段,數據目錄自行修改。
 建議字符集改為utf8mb4,因為utf8在MySQL中指的是utf8mb3,支持的utf8編碼最大字符長度為3字節,如果遇到4字節的寬字符就會插入異常。三字節的utf8最大能編碼的Unicode字符為0xffffff,也就是基本多文種平面,Emoji和很多不常用的漢字都不能存儲。而utf8mb4是5.5.3之後才支持的,為了兼容性考慮應該統一使用utf8mb4。

3.7 初始化

修改環境變量:

  #.bashrc或.bash_profile加上  export PATH=$PATH:/usr/local/mysql/server/bin

 

使用

  mysqld --initialize --user=mysql

 

  mysqld --initialize-insecure --user=mysql

 

然後開啟ssl與rsa支持(可選):

  mysql_ssl_rsa_setup

 

最後開啟服務:

  mysqld_safe --user=mysql &

 

3.8 修改密碼

使用root登錄,如果使用insecure初始化:

  mysql -u --skip-password

 

使用initialize初始化:

  mysql -u root -p

 

輸入初始化出現的密碼即可。
 然後修改密碼:

  alter user root@localhost identified by 'xxx';

 

3.9 測試

使用自帶的mysqlshow與mysqladmin:

  mysqladmin -u root -p versionmysqlshow -u root -p

 

在這裡插入圖片描述

3.10 收尾工作

3.10.1 別名

  alias md='mysqld -u mysql &'

 

這樣輸入md就可以啟動MySQL服務了。

3.10.2 安裝Mycli

Mycli是一個MySQL命令行客戶端工具,具有自動補全和語法高亮的功能。
 使用pip安裝即可,python2請使用

  pip install mycli

 

python3請使用

  pip3 install mycli

 

找不到pip請安裝:

  sudo apt install python-pip#python2  sudo apt install python3-pip

 

然後使用mycli進入數據庫:

  mycli -u root

 

愉快地使用補全吧!

4 參考

1.Linux下安裝mysql的方式(yum和源碼編譯兩種方式)
 2.utf8 與 utf8mb4,utf8mb4_unicode_ci 與 utf8mb4_general_ci
 3.MySQL-官網安裝文檔


   


[sl_ivan ] 源碼編譯安裝MySQL8.0.20的詳細教程已經有306次圍觀

http://coctec.com/docs/mysql/show-post-237842.html