国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - 源碼編譯安裝MySQL8.0.20的詳細教程

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

2021-01-18 14:44氷泠 Mysql

這篇文章主要介紹了源碼編譯安裝MySQL8.0.20的詳細教程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

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

MySQL8.0.20安裝教程及其安裝問題詳細教程  http://www.jfrwli.cn/article/132713.html

mysql8.0.20下載安裝及遇到的問題(圖文詳解)  http://www.jfrwli.cn/article/132715.html

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進行配置,檢測操作環境,指定安裝位置,開啟/關閉對應的功能,指定相關庫位置等,確定依賴關系等,一般需要使用–help獲取選項幫助,指定對應選項后配置并生成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即可:

?
1
2
3
4
5
6
sudo apt-get install -y bison
 git hostname
libncurses-dev
libssl-dev make
openssl pkg-config
doxygen cmake make

redhat8.x:

?
1
2
3
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:

?
1
2
3
4
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

?
1
2
3
4
5
6
7
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:

?
1
sudo apt install make

3.2.3 安裝gcc

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

?
1
2
3
4
5
6
7
8
9
10
11
12
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進行下載。

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

下載后解壓既可。

?
1
tar -xvf boost_1_70_0.tar.bz2

3.2.6 安裝ncurses

?
1
2
3
4
5
6
7
8
9
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

?
1
2
3
4
5
6
7
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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:

?
1
2
3
4
5
6
7
8
#在~/.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:\

使動態庫生效:

?
1
ldconfig

權限不足請加sudo。

3.3 下載mysql社區版

官網這里。

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

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

?
1
md5sum mysql-boost-8.0.20.tar.gz

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

3.4 生成makefile

?
1
2
3
4
5
6
7
8
9
10
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表示下載位置。

其他更多參數請使用

?
1
sudo cmake .. -lh

查看。

3.5 編譯與安裝

?
1
sudo make

?
1
sudo make -j n

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

?
1
make test

然后安裝:

?
1
sudo make install

3.6 后續配置

3.6.1 用戶組與用戶

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

?
1
2
3
4
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,可以放在

?
1
2
3
4
/etc/
/etc/mysql/
安裝目錄/etc/
~/

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[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 初始化

修改環境變量:

?
1
2
#.bashrc或.bash_profile加上
export path=$path:/usr/local/mysql/server/bin

使用

?
1
mysqld --initialize --user=mysql

?
1
mysqld --initialize-insecure --user=mysql

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

?
1
mysql_ssl_rsa_setup

最后開啟服務:

?
1
mysqld_safe --user=mysql &

3.8 修改密碼

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

?
1
mysql -u --skip-password

使用initialize初始化:

?
1
mysql -u root -p

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

?
1
alter user root@localhost identified by 'xxx';

3.9 測試

使用自帶的mysqlshow與mysqladmin:

?
1
mysqladmin -u root -p versionmysqlshow -u root -p

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

3.10 收尾工作

3.10.1 別名

?
1
alias md='mysqld -u mysql &'

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

3.10.2 安裝mycli

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

?
1
pip install mycli

python3請使用

?
1
pip3 install mycli

找不到pip請安裝:

?
1
2
sudo apt install python-pip#python2
sudo apt install python3-pip

然后使用mycli進入數據庫:

?
1
mycli -u root

愉快地使用補全吧!

4 參考

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

總結

到此這篇關于源碼編譯安裝mysql8.0.20的詳細教程的文章就介紹到這了,更多相關源碼編譯安裝mysql8.0.20內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/qq_27525611/article/details/105902643

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美精品在线看 | 日日摸夜夜添夜夜添高潮视频 | 中文字幕不卡一区 | 中文字幕在线看 | 日韩有码在线视频 | 国产在线中文字幕 | 91丝袜 | 91精品久久久久久久久久 | 欧美一区二区三区在线 | 免费看的毛片 | 久久1区 | 日本亚洲最大的色成网站www | 亚洲人成网站999久久久综合 | 免费看一区二区三区 | 精品视频在线播放 | 日本动漫一区 | 久久久精品日本 | 久久视频一区 | 国产电影一区二区三区图片 | 一区二区三区中文字幕 | 黄色av大片在线观看 | 欧美视频二区 | 成年人在线看片 | 国产日韩欧美三级 | 一级爱 | 成人免费在线观看视频 | 性农村人freesex | 美女视频一区 | 国产精品成人一区二区 | 欧美专区在线观看 | 久久久久久久久国产成人免费 | 国产精品一码二码三码在线 | 欧美日韩视频 | a级免费电影 | 视频一区中文字幕 | 国产一级黄 | 国产在线一区二区三区 | 国产精品2区 | 一区二区三区影视 | 久久久91精品国产一区二区三区 | 99在线视频播放 |