溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

CentOS7下源碼安裝MySQL 8.x

發(fā)布時(shí)間:2020-06-27 05:53:18 來(lái)源:網(wǎng)絡(luò) 閱讀:1048 作者:ZeroOne01 欄目:MySQL數(shù)據(jù)庫(kù)

會(huì)選擇使用源碼安裝MySQL,想必對(duì)MySQL及其他的安裝方式已經(jīng)有了一定的了解,這里就不對(duì)周邊信息進(jìn)行過(guò)多贅述了,直接開(kāi)始吧。

編譯MySQL比較消耗內(nèi)存,如果機(jī)器內(nèi)存較小,可能會(huì)在編譯期間出現(xiàn)內(nèi)存不足的異常。若沒(méi)有設(shè)置swap分區(qū)的可以設(shè)置swap分區(qū)來(lái)解決,否則只能擴(kuò)容內(nèi)存了:

[root@txy-server ~]# dd if=/dev/zero of=/swapfile bs=1k count=2048000
[root@txy-server ~]# mkswap /swapfile
[root@txy-server ~]# swapon /swapfile

1、安裝編譯時(shí)所需的依賴包

1.1、使用yum命令安裝編譯所依賴的包及工具:

[root@txy-server ~]# yum install -y cmake3 git gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel bzip2 openssl-devel libtirpc-devel.x86_64

由于編譯MySQL時(shí)對(duì)gcc的版本要求是5.3以上,所以我們需要先升級(jí)一下gcc的版本,因?yàn)閥um安裝目前最新版本只到4.8.5。

升級(jí)gcc版本的方式主要有兩種,一種是下載源碼包進(jìn)行編譯安裝,一種是使用yum安裝devtoolset包,目前devtoolset包里的gcc版本為5.3.1。

而源碼安裝的方式比較靈活可以選擇任意版本,但非常耗時(shí)。這里兩種方式都會(huì)介紹,可以自行視情況選擇。

1.1.1、使用yum安裝devtoolset包,命令如下:

[root@txy-server ~]# yum install -y centos-release-scl scl-utils-build
[root@txy-server ~]# yum install -y devtoolset-4-gcc.x86_64 devtoolset-4-gcc-c++.x86_64 devtoolset-4-gcc-gdb-plugin.x86_64

1.1.2、創(chuàng)建軟件鏈接,覆蓋/usr/bin下的gcc相關(guān)命令,因?yàn)榫幾gMySQL時(shí)默認(rèn)會(huì)去/usr/bin目錄下找gcc相關(guān)的命令:

[root@txy-server ~]# ln -sf /opt/rh/devtoolset-4/root/usr/bin/* /usr/bin/

1.1.3、最后驗(yàn)證一下gcc、cc、c++等命令的版本是否為5.3.1:

[root@txy-server ~]# gcc -v
...
gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
[root@txy-server ~]# cc -v
...
gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
[root@txy-server ~]# c++ -v
...
gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
  • Tips:建議使用這種方式進(jìn)行安裝,比較簡(jiǎn)單不容易踩坑

1.2.1、以下是源碼安裝的方式,首先下載GCC源碼安裝包并解壓縮:

[root@txy-server ~]# cd /usr/local/src
[root@txy-server /usr/local/src]# wget http://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz
[root@txy-server /usr/local/src]# tar -xzvf gcc-9.1.0.tar.gz

1.2.2、進(jìn)入解壓后的目錄,運(yùn)行download_prerequisites腳本,該腳本會(huì)自動(dòng)下載編譯時(shí)所需要的依賴文件和庫(kù):

[root@txy-server /usr/local/src]# cd gcc-9.1.0
[root@txy-server /usr/local/src/gcc-9.1.0]# ./contrib/download_prerequisites

1.2.3、建立輸出目錄,將所有的中間文件都放到該目錄下:

[root@txy-server /usr/local/src/gcc-9.1.0]# mkdir gcc-build-9.1.0

1.2.4、進(jìn)入新建的目錄,并完成編譯配置:

[root@txy-server /usr/local/src/gcc-9.1.0]# cd gcc-build-9.1.0
[root@txy-server /usr/local/src/gcc-9.1.0/gcc-build-9.1.0]# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

參數(shù)說(shuō)明:

  • –enable-languages:讓gcc支持哪些語(yǔ)言
  • –disable-multilib:不生成編譯為其他平臺(tái)可執(zhí)行代碼的交叉編譯器
  • –disable-checking:生成的編譯器在編譯過(guò)程中不做額外檢查,也可以使用–enable-checking=xxx來(lái)增加一些檢查

1.2.5、接著就可以進(jìn)行編譯安裝了:

[root@txy-server /usr/local/src/gcc-9.1.0/gcc-build-9.1.0]# make && make install
  • Tips:這一步耗時(shí)會(huì)比較久,大概1-2個(gè)小時(shí)

1.2.6、創(chuàng)建軟件鏈接,覆蓋/usr/bin下的gcc相關(guān)命令,因?yàn)榫幾gMySQL時(shí)默認(rèn)會(huì)去/usr/bin目錄下找gcc相關(guān)的命令:

[root@txy-server ~]# ln -sf /usr/local/bin/* /usr/bin/

1.2.7、最后驗(yàn)證一下gcc版本是否為9.1.0,如下代表安裝成功:

[root@txy-server ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/9.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
Thread model: posix
gcc version 9.1.0 (GCC)
[root@txy-server ~]#

2、下載MySQL源碼包解壓并編譯安裝

2.1、進(jìn)入MySQL官網(wǎng)下載地址:

https://dev.mysql.com/downloads/mysql/

2.2、復(fù)制源碼包的下載鏈接:
CentOS7下源碼安裝MySQL 8.x

2.3、到Linux上下載并解壓源碼包:

[root@txy-server ~]# cd /usr/local/src
[root@txy-server /usr/local/src]# wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-8.0.18.tar.gz
[root@txy-server /usr/local/src]# tar -zxvf mysql-boost-8.0.18.tar.gz

2.4、進(jìn)入解壓后的目錄,參照如下命令步驟完成編譯安裝:

# 創(chuàng)建數(shù)據(jù)文件存放目錄
[root@txy-server /usr/local/src]# mkdir -p /data/mysql
[root@txy-server /usr/local/src]# cd mysql-8.0.18/
# 新建目錄,存放編譯產(chǎn)生的中間文件。因?yàn)椴辉试S在源碼目錄下進(jìn)行編譯
[root@txy-server /usr/local/src/mysql-8.0.18]# mkdir builder
[root@txy-server /usr/local/src/mysql-8.0.18]# cd builder/
[root@txy-server /usr/local/src/mysql-8.0.18/builder]# cmake3 ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost
[root@txy-server /usr/local/src/mysql-8.0.18/builder]# make && make install
  • Tips:編譯安裝會(huì)比較耗時(shí),大概1-2個(gè)小時(shí)

cmake3命令所使用的參數(shù)說(shuō)明:

  • -DCMAKE_INSTALL_PREFIX=/usr/local/mysql:MySQL安裝的根目錄
  • -DMYSQL_DATADIR=/data/mysql:數(shù)據(jù)文件所存放的目錄
  • -DSYSCONFDIR=/etc :MySQL配置文件所在目錄
  • -DMYSQL_USER=mysql:MySQL服務(wù)的用戶名
  • -DWITH_MYISAM_STORAGE_ENGINE=1:安裝MyISAM引擎
  • -DWITH_INNOBASE_STORAGE_ENGINE=1:安裝InnoDB引擎
  • -DWITH_ARCHIVE_STORAGE_ENGINE=1:安裝Archive引擎
  • -DWITH_MEMORY_STORAGE_ENGINE=1:安裝Memory引擎
  • -DWITH_FEDERATED_STORAGE_ENGINE=1:安裝Federated引擎
  • -DWITH_PARTITION_STORAGE_ENGINE=1:安裝Partition引擎
  • -DWITH_READLINE=1:MySQL的readline library
  • -DMYSQL_UNIX_ADDR=/tmp/mysql.sock:sock文件的路徑
  • -DMYSQL_TCP_PORT=3306 :MySQL的監(jiān)聽(tīng)端口
  • -DENABLED_LOCAL_INFILE=1:?jiǎn)⒂眉虞d本地?cái)?shù)據(jù)
  • -DENABLE_DOWNLOADS=1:編譯時(shí)允許自主下載相關(guān)文件
  • -DEXTRA_CHARSETS=all :使MySQL支持所有的擴(kuò)展字符
  • -DDEFAULT_CHARSET=utf8mb4:設(shè)置默認(rèn)字符集為utf8mb4
  • -DDEFAULT_COLLATION=utf8mb4_general_ci:設(shè)置默認(rèn)字符校對(duì)
  • -DWITH_DEBUG=0:禁用調(diào)試模式
  • -DMYSQL_MAINTAINER_MODE=0:是否啟用mysql維護(hù)器特定的開(kāi)發(fā)環(huán)境
  • -DDOWNLOAD_BOOST=1:允許在線更新boost庫(kù)
  • -DWITH_BOOST=../boost:指定boost安裝路徑

關(guān)于cmake3所支持的參數(shù)可以到官網(wǎng)文檔進(jìn)行查詢:

https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html

2.5、編譯安裝完成后,創(chuàng)建mysql用戶及更改相應(yīng)目錄的屬主:

[root@txy-server ~]# groupadd mysql
[root@txy-server ~]# useradd -M -g mysql -s /sbin/nologin mysql
[root@txy-server ~]# chown -R mysql:mysql /usr/local/mysql/
[root@txy-server ~]# chown -R mysql:mysql /data/mysql/

2.6、編輯配置文件:

[root@txy-server ~]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock

[mysqld_safe]
log-error=/var/log/mysqld/mysqld.log
pid-file=/var/run/mysqld/mysql.pid

2.7、創(chuàng)建日志文件存放的目錄和pid文件存放的目錄,并賦權(quán)給mysql用戶:

[root@txy-server ~]# mkdir -p /var/log/mysqld /var/run/mysqld
[root@txy-server ~]# chown -R mysql:mysql /var/log/mysqld
[root@txy-server ~]# chown -R mysql:mysql /var/run/mysqld

2.8、配置環(huán)境變量,方便使用MySQL的命令:

[root@txy-server ~]# vim /etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
[root@txy-server ~]# source /etc/profile
[root@txy-server ~]# mysql --version  # 驗(yàn)證配置是否成功
mysql  Ver 8.0.18 for Linux on x86_64 (Source distribution)
[root@txy-server ~]#

2.9、執(zhí)行如下命令初始化數(shù)據(jù)庫(kù):

[root@txy-server ~]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql

初始化成功后會(huì)生成root賬戶的默認(rèn)密碼,如下圖所示:
CentOS7下源碼安裝MySQL 8.x

將該密碼復(fù)制并保存,因?yàn)楹竺嫘枰褂迷撁艽a登錄到MySQL中修改密碼

2.10、將MySQL生成的啟動(dòng)文件復(fù)制到/usr/lib/systemd/system/目錄下:

[root@txy-server ~]# cp /usr/local/src/mysql-8.0.18/builder/scripts/mysqld.service /usr/lib/systemd/system/
[root@txy-server ~]# chown 775 /usr/lib/systemd/system/mysqld.service

2.11、使用systemctl命令啟動(dòng)MySQL服務(wù):

[root@txy-server ~]# systemctl start mysqld

2.12、查看3306端口是否已正常監(jiān)聽(tīng):

[root@txy-server ~]# netstat -lntp |grep 3306
tcp6       0      0 :::33060                :::*                    LISTEN      27363/mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      27363/mysqld
[root@txy-server ~]#

2.13、使用默認(rèn)密碼登錄MySQL,并重置密碼及開(kāi)放遠(yuǎn)程登錄:

[root@txy-server ~]# mysql -uroot -pmXyfy/g8\)aus
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';  # 重置密碼
mysql> use mysql;
mysql> update user set host ='%' where user='root';  # 開(kāi)放遠(yuǎn)程登錄
mysql> FLUSH PRIVILEGES;  # 刷新修改

2.14、使用可視化工具進(jìn)行遠(yuǎn)程連接,測(cè)試下是否能正常對(duì)MySQL進(jìn)行訪問(wèn):
CentOS7下源碼安裝MySQL 8.x

end

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI