會選擇使用源碼安裝MySQL,想必對MySQL及其餘的安裝方式已經有了必定的瞭解,這裏就不對周邊信息進行過多贅述了,直接開始吧。html
編譯MySQL比較消耗內存,若是機器內存較小,可能會在編譯期間出現內存不足的異常。若沒有設置swap分區的能夠設置swap分區來解決,不然只能擴容內存了:mysql
[root@txy-server ~]# dd if=/dev/zero of=/swapfile bs=1k count=2048000 [root@txy-server ~]# mkswap /swapfile [root@txy-server ~]# swapon /swapfile
1.一、使用yum命令安裝編譯所依賴的包及工具:linux
[root@txy-server ~]# yum install -y cmake3 git gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel bzip2 openssl-devel
因爲編譯MySQL時對gcc的版本要求是5.3以上,因此咱們須要先升級一下gcc的版本,由於yum安裝目前最新版本只到4.8.5。c++
升級gcc版本的方式主要有兩種,一種是下載源碼包進行編譯安裝,一種是使用yum安裝devtoolset包,目前devtoolset包裏的gcc版本爲5.3.1。git
而源碼安裝的方式比較靈活能夠選擇任意版本,但很是耗時。這裏兩種方式都會介紹,能夠自行視狀況選擇。sql
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.二、建立軟件連接,覆蓋/usr/bin
下的gcc相關命令,由於編譯MySQL時默認會去/usr/bin
目錄下找gcc相關的命令:vim
[root@txy-server ~]# ln -sf /opt/rh/devtoolset-4/root/usr/bin/* /usr/bin/
1.1.三、最後驗證一下gcc、cc、c++等命令的版本是否爲5.3.1:centos
[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)
1.2.一、如下是源碼安裝的方式,首先下載GCC源碼安裝包並解壓縮:bash
[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.二、進入解壓後的目錄,運行download_prerequisites
腳本,該腳本會自動下載編譯時所須要的依賴文件和庫:
[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.三、創建輸出目錄,將全部的中間文件都放到該目錄下:
[root@txy-server /usr/local/src/gcc-9.1.0]# mkdir gcc-build-9.1.0
1.2.四、進入新建的目錄,並完成編譯配置:
[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
參數說明:
–enable-languages
:讓gcc支持哪些語言–disable-multilib
:不生成編譯爲其餘平臺可執行代碼的交叉編譯器–disable-checking
:生成的編譯器在編譯過程當中不作額外檢查,也可使用–enable-checking=xxx
來增長一些檢查1.2.五、接着就能夠進行編譯安裝了:
[root@txy-server /usr/local/src/gcc-9.1.0/gcc-build-9.1.0]# make && make install
1.2.六、建立軟件連接,覆蓋/usr/bin
下的gcc相關命令,由於編譯MySQL時默認會去/usr/bin
目錄下找gcc相關的命令:
[root@txy-server ~]# ln -sf /usr/local/bin/* /usr/bin/
1.2.七、最後驗證一下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.二、複製源碼包的下載連接:
2.三、到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.四、進入解壓後的目錄,參照以下命令步驟完成編譯安裝:
# 建立數據文件存放目錄 [root@txy-server /usr/local/src]# mkdir -p /data/mysql [root@txy-server /usr/local/src]# cd mysql-8.0.18/ # 新建目錄,存放編譯產生的中間文件。由於不容許在源碼目錄下進行編譯 [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
cmake3
命令所使用的參數說明:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
:MySQL安裝的根目錄-DMYSQL_DATADIR=/data/mysql
:數據文件所存放的目錄-DSYSCONFDIR=/etc
:MySQL配置文件所在目錄-DMYSQL_USER=mysql
:MySQL服務的用戶名-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的監聽端口-DENABLED_LOCAL_INFILE=1
:啓用加載本地數據-DENABLE_DOWNLOADS=1
:編譯時容許自主下載相關文件-DEXTRA_CHARSETS=all
:使MySQL支持全部的擴展字符-DDEFAULT_CHARSET=utf8mb4
:設置默認字符集爲utf8mb4-DDEFAULT_COLLATION=utf8mb4_general_ci
:設置默認字符校對-DWITH_DEBUG=0
:禁用調試模式-DMYSQL_MAINTAINER_MODE=0
:是否啓用mysql維護器特定的開發環境-DDOWNLOAD_BOOST=1
:容許在線更新boost庫-DWITH_BOOST=../boost
:指定boost安裝路徑關於cmake3
所支持的參數能夠到官網文檔進行查詢:
https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
2.五、編譯安裝完成後,建立mysql用戶及更改相應目錄的屬主:
[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.六、編輯配置文件:
[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.七、建立日誌文件存放的目錄和pid文件存放的目錄,並賦權給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.八、配置環境變量,方便使用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 # 驗證配置是否成功 mysql Ver 8.0.18 for Linux on x86_64 (Source distribution) [root@txy-server ~]#
2.九、執行以下命令初始化數據庫:
[root@txy-server ~]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql
初始化成功後會生成root帳戶的默認密碼,以下圖所示:
將該密碼複製並保存,由於後面須要使用該密碼登陸到MySQL中修改密碼
2.十、將MySQL生成的啓動文件複製到/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.十一、使用systemctl
命令啓動MySQL服務:
[root@txy-server ~]# systemctl start mysqld
2.十二、查看3306端口是否已正常監聽:
[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.1三、使用默認密碼登陸MySQL,並重置密碼及開放遠程登陸:
[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'; # 開放遠程登陸 mysql> FLUSH PRIVILEGES; # 刷新修改
2.1四、使用可視化工具進行遠程鏈接,測試下是否能正常對MySQL進行訪問:
end