在上篇文章給大家介紹了:
MySQL8.0.20安裝教程及其安裝問(wèn)題詳細(xì)教程 https://www.jb51.net/article/186202.htm
mysql8.0.20下載安裝及遇到的問(wèn)題(圖文詳解) 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社區(qū)版8.0.20,首先會(huì)介紹一些編譯安裝的相關(guān)知識(shí),然后開(kāi)始編譯安裝
2 源碼編譯安裝的相關(guān)知識(shí)
2.1 make與configure
make是一個(gè)編譯的命令,會(huì)在當(dāng)前的目錄下尋找Makefile這個(gè)文件,Makefile文件記錄了源代碼如何編譯的詳細(xì)信息。而configure是由軟件開(kāi)發(fā)商編寫(xiě)的一個(gè)檢測(cè)程序檢測(cè)用戶(hù)的開(kāi)發(fā)環(huán)境,檢測(cè)完畢后生成Makefile文件。通常,configure會(huì)檢測(cè)如下內(nèi)容:
- 是否具有合適的編譯器
- 是否具有所需函數(shù)庫(kù)以及其他依賴(lài)
- 是否兼容本系統(tǒng)
- 是否存在內(nèi)核頭文件
2.2 Tarball文件
Tarball文件其實(shí)就是將源代碼以tar打后壓縮的文件。通常使用gzip進(jìn)行壓縮,一般擴(kuò)展名為.tar.gz或.tgz,不過(guò)由于bzip2以及xz等技術(shù)壓縮效果比gzip好,因此文件名也會(huì)變成擴(kuò)展名也會(huì)變成.tar.bz2或.tar.xz之類(lèi)的。通常一個(gè)Tarball文件有:
- 源碼
- 檢測(cè)文件(configure/config)
- 說(shuō)明(README/INSTALL)
2.3 源碼編譯安裝相關(guān)組件
2.3.1 編譯器
需要有編譯器才能進(jìn)行編譯操作,通常使用的是gcc。
2.3.2 make+autoconfig
以Tarball形式發(fā)布的軟件,為了簡(jiǎn)化編譯流程,通常需要make來(lái)根據(jù)目標(biāo)文件文件的依賴(lài)性進(jìn)行編譯,但是由于make需要Makefile,因此需要autoconfig生成Makefile。
2.3.3 函數(shù)庫(kù)
需要內(nèi)核提供的庫(kù)以及相關(guān)的include文件。
2.4 靜態(tài)庫(kù)與動(dòng)態(tài)庫(kù)
函數(shù)庫(kù)分為動(dòng)態(tài)庫(kù)與靜態(tài)庫(kù)兩種類(lèi)型,絕大部分放在/lib與/lib64中。
2.4.1 靜態(tài)庫(kù)
擴(kuò)展名為.a,編譯時(shí)會(huì)直接整合到執(zhí)行程序中,所以利用靜態(tài)庫(kù)生成的文件會(huì)比較大一些,編譯后的可執(zhí)行文件可以直接運(yùn)行,無(wú)需依賴(lài)外部函數(shù)庫(kù)。另外升級(jí)難度較大,因?yàn)槭侵苯诱线M(jìn)程序中,升級(jí)了靜態(tài)庫(kù)的話需要重新編譯。
2.4.2 動(dòng)態(tài)庫(kù)
擴(kuò)展名為.so,在編譯時(shí)不像靜態(tài)庫(kù)一樣,動(dòng)態(tài)庫(kù)在程序中只有一個(gè)指針,當(dāng)可執(zhí)行程序需要用到函數(shù)庫(kù)的功能時(shí),才會(huì)讀取函數(shù)庫(kù)來(lái)使用,生成的可執(zhí)行文件會(huì)比較小一點(diǎn),但是不能獨(dú)立執(zhí)行編譯出來(lái)的程序。另外升級(jí)比較方便,不需要重新編譯,因?yàn)閳?zhí)行文件會(huì)直接指向新的函數(shù)庫(kù)文件。
2.5 編譯安裝的一般步驟
- (1)獲取源碼:一般使用wget或curl或從瀏覽器下載。
- (2)查看幫助文件:解壓后查看INSTALL或README等文件相關(guān)內(nèi)容
- (3)安裝依賴(lài):根據(jù)官網(wǎng)文檔或上一步中得到的信息安裝依賴(lài)
- (4)生成Makefile:一般使用configure/config進(jìn)行配置,檢測(cè)操作環(huán)境,指定安裝位置,開(kāi)啟/關(guān)閉對(duì)應(yīng)的功能,指定相關(guān)庫(kù)位置等,確定依賴(lài)關(guān)系等,一般需要使用–help獲取選項(xiàng)幫助,指定對(duì)應(yīng)選項(xiàng)后配置并生成Makefile
- (5)編譯:實(shí)際編譯步驟,一個(gè)簡(jiǎn)單的make命令,實(shí)際包含了頭文件預(yù)編譯,預(yù)處理,編譯與連接步驟
- (6)安裝:make install,這一步實(shí)際進(jìn)行安裝與操作系統(tǒng)連接兩個(gè)步驟
注意,以上步驟都是有順序的,而且前一個(gè)步驟執(zhí)行失敗則后一個(gè)步驟也不能執(zhí)行,也就是說(shuō)需要前一個(gè)步驟執(zhí)行成功才能進(jìn)行下一步的操作。完成以上六步就能編譯安裝了,一般需要進(jìn)行一些后續(xù)處理,比如,添加可執(zhí)行文件路徑到PATH,添加頭文件與庫(kù)文件到/usr/include與/etc/ld.so.conf.d中,添加聯(lián)機(jī)幫助文件到/etc/man_db.conf中。
2.6 編譯安裝前的心理準(zhǔn)備
這里是最后的提示了,未安裝之前還可以ctrl+w關(guān)閉本頁(yè)面,避免無(wú)數(shù)的痛苦。
編譯安裝最常見(jiàn)的問(wèn)題就是版本與依賴(lài)的問(wèn)題,版本問(wèn)題容易處理,可以通過(guò)包管理器進(jìn)行升級(jí)或者手動(dòng)升級(jí),至于依賴(lài)問(wèn)題,包管理器安裝的話很容易,編譯安裝的話會(huì)非常頭疼,因?yàn)椴恢滥硞€(gè)依賴(lài)下面還需要安裝多少個(gè)依賴(lài)。
所以,需要準(zhǔn)備充足的時(shí)間,還有充分的耐心,去解決無(wú)數(shù)的問(wèn)題,才能成功進(jìn)行編譯安裝MySQL與Workbench這種大型軟件。
不廢話了,開(kāi)始吧。
3 安裝MySQL
3.1 安裝依賴(lài)
MySQL所需依賴(lài)如下:
- cmake
- make(推薦3.75以上)
- 編譯器(GCC5.3+或Clang4.0+或XCode9+或Developer Studio12.6+或Visual Studio2017)
- SSL庫(kù)(默認(rèn)使用系統(tǒng)的OpenSSL)
- Boost C++庫(kù),需要用來(lái)構(gòu)建但不需要使用,無(wú)需安裝,源碼即可
- ncurses庫(kù)
- 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 編譯安裝
若不想用包管理器安裝,可以使用編譯安裝的方式。
歡迎來(lái)折騰。
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核數(shù),自定義修改,若失敗請(qǐng)使用make
make test
sudo make install
3.2.2 安裝make
沒(méi)有編譯器的情況下無(wú)法編譯安裝,使用軟件包安裝即可,筆者的Debian系,直接使用apt:
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加入以下內(nèi)容
/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為安裝位置,默認(rèn)/usr/local
#openssldir為配置文件位置,同時(shí)存放證書(shū)與密鑰對(duì)
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加上以下內(nèi)容
/usr/local/openssl/lib
3.2.5 下載boost
官網(wǎng)戳這里。
需要的版本為1.70.0。目前最新的版本為1.73.0,理論上來(lái)說(shuō)更新的版本應(yīng)該可以,這里下載的是1.70.0。如果不手動(dòng)下載boost庫(kù)的話可以在使用cmake生成Makefile時(shí)設(shè)置DDOWNLOAD_BOOST為1進(jìn)行下載。
下載后解壓既可。
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 后續(xù)處理
修改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:\
使動(dòng)態(tài)庫(kù)生效:
權(quán)限不足請(qǐng)加sudo。
3.3 下載MySQL社區(qū)版
官網(wǎng)這里。
這里不知道第一個(gè)與第二個(gè)有什么區(qū)別,因?yàn)楣P者兩個(gè)都試過(guò)都能編譯安裝成功。雖然上面寫(xiě)著第二個(gè)帶Boost頭,但是貌似沒(méi)什么用。這里用的是第一個(gè)。
校驗(yàn)(可選):
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:指定默認(rèn)字符集為utf8mb4,因?yàn)闅v史遺留問(wèn)題,MySQL中的utf8不是真正的utf8,而是閹割版的,最長(zhǎng)只有三個(gè)字節(jié),當(dāng)遇到四個(gè)字節(jié)的utf8編碼時(shí),會(huì)導(dǎo)致存儲(chǔ)異常。從5.5.3開(kāi)始,使用utf8mb4實(shí)現(xiàn)完整的utf8。
- DDEFAULT_COLLATION:排序規(guī)則,默認(rèn)為utf8mb4_0900_ai_ci,屬于utf8mb4_unicode_ci的一種。0900指的是Unicode校對(duì)算法版本,ai是指口音不敏感(as表示敏感),ci指不區(qū)分大小寫(xiě)(cs表示區(qū)分)。utf8mb4_unicode_ci表示基于標(biāo)準(zhǔn)的的Unicode來(lái)排序和比較,能夠在各種語(yǔ)言之間精確排序,而utf8mb4_general_ci遇到某些特殊的字符集時(shí)排序結(jié)果可能不一致,準(zhǔn)確性較差,但是性能較好,比較和排序時(shí)候更快。
- DENABLED_LOCAL_INFILE表示能否使用load data命令。
- DWITH_SSL表示使用系統(tǒng)的SSL庫(kù),若不使用系統(tǒng)的請(qǐng)自定義路徑。
- DCMAKE_INSTALL_PREFIX:MySQL安裝目錄。
- DMYSQL_DATADIR:MySQL數(shù)據(jù)目錄,初始時(shí)為空。
- DMYSQL_TCP_PORT:端口,默認(rèn)3306。
- DDOWNLOAD_BOOST:取值0或1,是否下載Boost庫(kù)。
- DWITH_BOOST:若不下載Boost庫(kù)的話,是本地Boost庫(kù)的位置,若下載Boost表示下載位置。
其他更多參數(shù)請(qǐng)使用
查看。
3.5 編譯與安裝
或
筆者試過(guò)了make -j 6,失敗,無(wú)奈換成了make。
make的速度和make -j還是很大差距的。
編譯好之后,建議測(cè)試一下:
然后安裝:
3.6 后續(xù)配置
3.6.1 用戶(hù)組與用戶(hù)
新建用戶(hù)組與用戶(hù),同時(shí)修改用戶(hù)數(shù)據(jù)目錄權(quán)限:
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
數(shù)據(jù)目錄根據(jù)需要修改,若后面出現(xiàn)不可寫(xiě)錯(cuò)誤請(qǐng)把權(quán)限改為777。
3.6.2 配置文件
配置文件為my.cnf,可以放在
/etc/
/etc/mysql/
安裝目錄/etc/
~/
下,讀取順序從上到下。筆者安裝后默認(rèn)在/etc/mysql/my.cnf,這個(gè)是全局配置,~/.my.cnf是用戶(hù)特定配置,這里直接修改/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]下面是新添加的字段,數(shù)據(jù)目錄自行修改。
建議字符集改為utf8mb4,因?yàn)閡tf8在MySQL中指的是utf8mb3,支持的utf8編碼最大字符長(zhǎng)度為3字節(jié),如果遇到4字節(jié)的寬字符就會(huì)插入異常。三字節(jié)的utf8最大能編碼的Unicode字符為0xffffff,也就是基本多文種平面,Emoji和很多不常用的漢字都不能存儲(chǔ)。而utf8mb4是5.5.3之后才支持的,為了兼容性考慮應(yīng)該統(tǒng)一使用utf8mb4。
3.7 初始化
修改環(huán)境變量:
#.bashrc或.bash_profile加上
export PATH=$PATH:/usr/local/mysql/server/bin
使用
mysqld --initialize --user=mysql
或
mysqld --initialize-insecure --user=mysql
然后開(kāi)啟ssl與rsa支持(可選):
最后開(kāi)啟服務(wù):
3.8 修改密碼
使用root登錄,如果使用insecure初始化:
使用initialize初始化:
輸入初始化出現(xiàn)的密碼即可。
然后修改密碼:
alter user root@localhost identified by 'xxx';
3.9 測(cè)試
使用自帶的mysqlshow與mysqladmin:
mysqladmin -u root -p versionmysqlshow -u root -p
3.10 收尾工作
3.10.1 別名
alias md='mysqld -u mysql '
這樣輸入md就可以啟動(dòng)MySQL服務(wù)了。
3.10.2 安裝Mycli
Mycli是一個(gè)MySQL命令行客戶(hù)端工具,具有自動(dòng)補(bǔ)全和語(yǔ)法高亮的功能。
使用pip安裝即可,python2請(qǐng)使用
python3請(qǐng)使用
找不到pip請(qǐng)安裝:
sudo apt install python-pip#python2
sudo apt install python3-pip
然后使用mycli進(jìn)入數(shù)據(jù)庫(kù):
愉快地使用補(bǔ)全吧!
4 參考
1.Linux下安裝mysql的方式(yum和源碼編譯兩種方式)
2.utf8 與 utf8mb4,utf8mb4_unicode_ci 與 utf8mb4_general_ci
3.MySQL-官網(wǎng)安裝文檔
總結(jié)
到此這篇關(guān)于源碼編譯安裝MySQL8.0.20的詳細(xì)教程的文章就介紹到這了,更多相關(guān)源碼編譯安裝MySQL8.0.20內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- 解析MySQL8.0新特性——事務(wù)性數(shù)據(jù)字典與原子DDL
- 詳解MySQL8.0 字典表增強(qiáng)
- mysql8.0.21下載安裝詳細(xì)教程
- MySQL8.0.21.0社區(qū)版安裝教程(圖文詳解)
- 阿里云centos7中安裝MySQL8.0.13的方法步驟
- mysql8.0.20安裝與連接navicat的方法及注意事項(xiàng)
- CentOS7版本安裝Mysql8.0.20版本數(shù)據(jù)庫(kù)的詳細(xì)教程
- mysql8.0.20下載安裝及遇到的問(wèn)題(圖文詳解)
- MySQL8.0.20安裝教程及其安裝問(wèn)題詳細(xì)教程
- CentOS8部署LNMP環(huán)境之編譯安裝mysql8.0.29的教程詳解
- MySQL8.0 如何快速加列