国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

如何用源碼編譯安裝MySQL8.0.20

2024-07-24 12:36:16
字體:
來源:轉載
供稿:網(wǎng)友
  這篇文章主要講解了如何用源碼編譯安裝MySQL8.0.20,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
 
  1 概述
 
  本文章主要講述了如何從源碼編譯安裝MySQL社區(qū)版8.0.20,首先會介紹一些編譯安裝的相關知識,然后開始編譯安裝
 
  2 源碼編譯安裝的相關知識
 
  2.1 make與configure
 
  make是一個編譯的命令,會在當前的目錄下尋找Makefile這個文件,Makefile文件記錄了源代碼如何編譯的詳細信息。而configure是由軟件開發(fā)商編寫的一個檢測程序檢測用戶的開發(fā)環(huán)境,檢測完畢后生成Makefile文件。通常,configure會檢測如下內容:
 
  是否具有合適的編譯器
  是否具有所需函數(shù)庫以及其他依賴
  是否兼容本系統(tǒng)
  是否存在內核頭文件
  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形式發(fā)布的軟件,為了簡化編譯流程,通常需要make來根據(jù)目標文件文件的依賴性進行編譯,但是由于make需要Makefile,因此需要autoconfig生成Makefile。
 
  2.3.3 函數(shù)庫
 
  需要內核提供的庫以及相關的include文件。
 
  2.4 靜態(tài)庫與動態(tài)庫
 
  函數(shù)庫分為動態(tài)庫與靜態(tài)庫兩種類型,絕大部分放在/lib與/lib64中。
 
  2.4.1 靜態(tài)庫
 
  擴展名為.a,編譯時會直接整合到執(zhí)行程序中,所以利用靜態(tài)庫生成的文件會比較大一些,編譯后的可執(zhí)行文件可以直接運行,無需依賴外部函數(shù)庫。另外升級難度較大,因為是直接整合進程序中,升級了靜態(tài)庫的話需要重新編譯。
 
  2.4.2 動態(tài)庫
 
  擴展名為.so,在編譯時不像靜態(tài)庫一樣,動態(tài)庫在程序中只有一個指針,當可執(zhí)行程序需要用到函數(shù)庫的功能時,才會讀取函數(shù)庫來使用,生成的可執(zhí)行文件會比較小一點,但是不能獨立執(zhí)行編譯出來的程序。另外升級比較方便,不需要重新編譯,因為執(zhí)行文件會直接指向新的函數(shù)庫文件。
 
  2.5 編譯安裝的一般步驟
 
  (1)獲取源碼:一般使用wget或curl或從瀏覽器下載。
  (2)查看幫助文件:解壓后查看INSTALL或README等文件相關內容
  (3)安裝依賴:根據(jù)官網(wǎng)文檔或上一步中得到的信息安裝依賴
  (4)生成Makefile:一般使用configure/config進行配置,檢測操作環(huán)境,指定安裝位置,開啟/關閉對應的功能,指定相關庫位置等,確定依賴關系等,一般需要使用–help獲取選項幫助,指定對應選項后配置并生成Makefile
  (5)編譯:實際編譯步驟,一個簡單的make命令,實際包含了頭文件預編譯,預處理,編譯與連接步驟
  (6)安裝:make install,這一步實際進行安裝與操作系統(tǒng)連接兩個步驟
  注意,以上步驟都是有順序的,而且前一個步驟執(zhí)行失敗則后一個步驟也不能執(zhí)行,也就是說需要前一個步驟執(zhí)行成功才能進行下一步的操作。完成以上六步就能編譯安裝了,一般需要進行一些后續(xù)處理,比如,添加可執(zhí)行文件路徑到PATH,添加頭文件與庫文件到/usr/include與/etc/ld.so.conf.d中,添加聯(lián)機幫助文件到/etc/man_db.conf中。
 
  2.6 編譯安裝前的心理準備
 
  這里是最后的提示了,未安裝之前還可以ctrl+w關閉本頁面,避免無數(shù)的痛苦。
  編譯安裝最常見的問題就是版本與依賴的問題,版本問題容易處理,可以通過包管理器進行升級或者手動升級,至于依賴問題,包管理器安裝的話很容易,編譯安裝的話會非常頭疼,因為不知道某個依賴下面還需要安裝多少個依賴。
  所以,需要準備充足的時間,還有充分的耐心,去解決無數(shù)的問題,才能成功進行編譯安裝MySQL與Workbench這種大型軟件。
  不廢話了,開始吧。
 
  3 安裝MySQL
 
  3.1 安裝依賴
 
  MySQL所需依賴如下:
 
  cmake
  make(推薦3.75以上)
  編譯器(GCC5.3+或Clang4.0+或XCode9+或Developer Studio12.6+或Visual Studio2017)
  SSL庫(默認使用系統(tǒng)的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核數(shù),自定義修改,若失敗請使用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
 
  官網(wǎng)戳這里。
  需要的版本為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 后續(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:/
  使動態(tài)庫生效:
 
  ldconfig
  權限不足請加sudo。
 
  3.3 下載MySQL社區(qū)版
 
  官網(wǎng)這里。
  
  這里不知道第一個與第二個有什么區(qū)別,因為筆者兩個都試過都能編譯安裝成功。雖然上面寫著第二個帶Boost頭,但是貌似沒什么用。這里用的是第一個。
  校驗(可選):
 
  md5sum mysql-boost-8.0.20.tar.gz
  如何用源碼編譯安裝MySQL8.0.20
 
  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,而是閹割版的,最長只有三個字節(jié),當遇到四個字節(jié)的utf8編碼時,會導致存儲異常。從5.5.3開始,使用utf8mb4實現(xiàn)完整的utf8。
  DDEFAULT_COLLATION:排序規(guī)則,默認為utf8mb4_0900_ai_ci,屬于utf8mb4_unicode_ci的一種。0900指的是Unicode校對算法版本,ai是指口音不敏感(as表示敏感),ci指不區(qū)分大小寫(cs表示區(qū)分)。utf8mb4_unicode_ci表示基于標準的的Unicode來排序和比較,能夠在各種語言之間精確排序,而utf8mb4_general_ci遇到某些特殊的字符集時排序結果可能不一致,準確性較差,但是性能較好,比較和排序時候更快。
  DENABLED_LOCAL_INFILE表示能否使用load data命令。
  DWITH_SSL表示使用系統(tǒng)的SSL庫,若不使用系統(tǒng)的請自定義路徑。
  DCMAKE_INSTALL_PREFIX:MySQL安裝目錄。
  DMYSQL_DATADIR:MySQL數(shù)據(jù)目錄,初始時為空。
  DMYSQL_TCP_PORT:端口,默認3306。
  DDOWNLOAD_BOOST:取值0或1,是否下載Boost庫。
  DWITH_BOOST:若不下載Boost庫的話,是本地Boost庫的位置,若下載Boost表示下載位置。
  其他更多參數(shù)請使用
 
  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 后續(xù)配置
 
  3.6.1 用戶組與用戶
 
  新建用戶組與用戶,同時修改用戶數(shù)據(jù)目錄權限:
 
  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)不可寫錯誤請把權限改為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]下面是新添加的字段,數(shù)據(jù)目錄自行修改。
  建議字符集改為utf8mb4,因為utf8在MySQL中指的是utf8mb3,支持的utf8編碼最大字符長度為3字節(jié),如果遇到4字節(jié)的寬字符就會插入異常。三字節(jié)的utf8最大能編碼的Unicode字符為0xffffff,也就是基本多文種平面,Emoji和很多不常用的漢字都不能存儲。而utf8mb4是5.5.3之后才支持的,為了兼容性考慮應該統(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
  然后開啟ssl與rsa支持(可選):
 
  mysql_ssl_rsa_setup
  最后開啟服務:
 
  mysqld_safe --user=mysql &
  3.8 修改密碼
 
  使用root登錄,如果使用insecure初始化:
 
  mysql -u --skip-password
  使用initialize初始化:
 
  mysql -u root -p
  輸入初始化出現(xiàn)的密碼即可。
  然后修改密碼:
 
  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進入數(shù)據(jù)庫:
 
  mycli -u root
  愉快地使用補全吧!

(編輯:武林網(wǎng))

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 英超| 镇巴县| 义马市| 定州市| 泊头市| 徐州市| 乌鲁木齐县| 汕头市| 高淳县| 建平县| 登封市| 会东县| 金溪县| 林州市| 山东省| 增城市| 讷河市| 伊通| 和田市| 普陀区| 汉阴县| 贵阳市| 金山区| 洱源县| 凉城县| 清苑县| 永州市| 共和县| 含山县| 卓尼县| 丰原市| 蒙城县| 静宁县| 彭泽县| 阿拉善盟| 龙州县| 漳浦县| 石狮市| 南召县| 扎囊县| 彝良县|