1. 程式人生 > 實用技巧 >Linux 編譯安裝MYSQL

Linux 編譯安裝MYSQL

一、編譯安裝MySQL

1、MySQL官方連結

MySQL官網:https://nginx.mysql.com/

MySQL下載:https://dev.mysql.com/downloads/mirrors/

MySQL文件:https://dev.mysql.com/doc/relnotes/mysql/5.7/en/

2、MySQL版本

版本分為四種:Alpha版、Beta版、RC版(Release Candidate)、GA版(Generally Available).

1、Alpha版

Alpha版本軟體,這是軟體工程對軟體開發過程軟體定義使用的版本說明。beta是內部測試版,一般不向外部發布,會有很多bug,除非你也是測試人員,否則不推薦使用,是希臘字母的第一位,表示最初級的版本,Alpha是a。

2、Beta版

Bate版軟體,這也是軟體工程中對軟體開發測試版本控制的版本說明。Beta一般是Alpha後面的版本,該版本相對於a版已有了很大的改進,消除了嚴重的錯誤,但是仍然有一個缺陷,經過許多測試需要進一步消除,這個階段的版本會一直加入新的功能,Beta是B。

3、RC版

RC、RC即Release Candidate的簡寫。這是Beta後面的版本,一般RC版本並沒有新增功能,而是修復了一些反饋的Beta中存在的bug,所以RC版本更接近最終發行版即穩定版(GA版)

4、GA版

GA, GA即Generally Available的簡寫。這就是軟體的最終發行版,這個版本一般BUG相對較小,這個發行版也可以稱為穩定版。

5、Release版

Release版,在有些軟體存在,在MySQL中一般沒有這個版本。該版本意味“最終版本”,在前面版本的一系列測試版之後,終歸會有一個正式版本,是最終交付使用者使用的一個版本。該版本有時也稱為標準版。一般情況下。Release不會以單詞形式出現在軟體封面上,取而代之的是符號(R).

3、MySQL版本號

1、系統查詢已安裝MySQL版本方法

1、已登入MySQL的方法

mysql> status;
mysql> select version();
mysql> select@@version;
mysql> show variables like "
%version%";

2、不登入直接查詢的方法

[root@localhost ~]# mysql -u root -p #連線mysql
[root@localhost ~]# mysqladmin -uroot -p version;
[root@localhost ~]# mysql -V
[root@localhost ~]# mysql --version
[root@localhost ~]# mysql --help | grep Distrib$ mysql -? | grep Distrib$ mysql -I grep Distrib
[root@localhost ~]# rpm -qa | grep mysql

3、MySQL版本說明

以MySQL 5.7.27這個版本的版本號為例來說明每個數字含義。

第一個數字(5)主版本號:檔案格式改動時,將作為新的版本釋出;

第二個數字(7)發行版本號:新增特性或者改動不相容時,發行版本號需要更改;

第三個數字(27)釋出序列號:主要是小的改動,如bug修復,函式新增或更改,配置引數的更改等。

4、MySQL型別

1、MySQL Community Server

MySQL Community Server是社群版本,開源免費,但不提供官方技術支援。遵循GPL協議。

MySQL Community Server也是我們通常用MySQL的版本。根據不同的作業系統平臺細分為多個版本。

2、MySQLEnterprise Edition

MySQL Enterprise Edition企業版本,需付費,可以試用30天。

3、MySQLCluster

MySQL Cluster叢集版,開源免費。可將幾個MySQLServer封裝成一個Server。MySQLCluster CGE高階叢集版,需付費。

5、MySQL安裝方式

1、yum安裝

優點:操作簡單易用。不用單獨下載,伺服器可以聯網且yum源沒有問題即可(可以選擇國內的163/sohu/阿里源)

2、編譯安裝

5.1.X及之前的版本是通過下載tar包以後解壓後進入軟體包解壓路徑。然後./configure、make、makeinstall

5.4.X到 5.7.X通過下載tar包以後解壓進入軟體包解壓路徑。然後cmake、make、makeinstall(cmake需要提前安裝)

有點:可以定製功能特性。

3、二進位制安裝

官方下載二進位制包,解壓初始化即可直接使用不用安裝。

4、rpm安裝

需要提前下載rpm軟體包上傳伺服器系統本地。

使用rpm或者yum命令直接安裝

6、MySQL安裝方式

1、MySQL編譯環境

1、建立個mysql安裝包目錄

[root@localhost ~]# mkdir -p /usr/local/src/mysql

2、安裝編譯環境依賴包

[root@localhost ~]# yum -y install gcc gcc-c++ ncurses ncurses-devel bison make 

2、軟體包下載

[root@localhost ~]# cd /usr/local/src/mysql
[root@localhost mysql]# wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
[root@localhost mysql]# wget https://github.com/Kitware/CMake/releases/download/v3.14.5/cmake-3.14.5.tar.gz
[root@localhost mysql]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.27.tar.gz
[root@localhost mysql]# ls -l
總用量 143532
-rw-r--r--.  1 root root  83709983 12月 10 16:52 boost_1_59_0.tar.gz
-rw-r--r--.  1 root root   8854929 6月   1 2019 cmake-3.14.5.tar.gz
-rw-r--r--.  1 root root  54398696 6月  10 2019 mysql-5.7.27.tar.gz

3、安裝cmake

1、安裝cmake
[root@localhost ~]# tar -zxvf cmake-3.14.5.tar.gz 
[root@localhost ~]# cd cmake-3.14.5
[root@localhost ~]# ./bootstrap
[root@localhost ~]# gmake
[root@localhost ~]# gmake install
2、檢視cmake版本
[root@localhost ~]# cmake -version

4、解壓 boost庫到/usr/local/目錄

[root@localhost mysql]# tar xf boost_1_59_0.tar.gz -C /usr/local/
[root@localhost mysql]# cd /usr/local/
[root@localhost local]# mv boost_1_59_0/ boost
[root@localhost local]# cd boost
[root@localhost boost]# ls -l
總用量 108
drwxr-xr-x. 105 501 games  8192 8月  12 2015 boost
-rw-r--r--.   1 501 games   850 8月  11 2015 boost-build.jam
-rw-r--r--.   1 501 games 21920 8月  11 2015 boostcpp.jam
-rw-r--r--.   1 501 games   989 8月  11 2015 boost.css
-rw-r--r--.   1 501 games  6308 8月  11 2015 boost.png
-rw-r--r--.   1 501 games  2477 8月  11 2015 bootstrap.bat
-rwxr-xr-x.   1 501 games 10631 8月  11 2015 bootstrap.sh
drwx------.   7 501 games    84 8月  12 2015 doc
-rw-r--r--.   1 501 games   769 8月  11 2015 index.htm
-rw-r--r--.   1 501 games  5476 8月  11 2015 index.html
-rw-r--r--.   1 501 games   291 8月  11 2015 INSTALL
-rw-r--r--.   1 501 games 10779 8月  11 2015 Jamroot
drwx------. 116 501 games  4096 8月  12 2015 libs
-rw-r--r--.   1 501 games  1338 8月  11 2015 LICENSE_1_0.txt
drwxr-xr-x.   4 501 games   159 8月  11 2015 more
-rw-r--r--.   1 501 games  2608 8月  11 2015 rst.css
drwxr-xr-x.   2 501 games   141 8月  11 2015 status
drwxr-xr-x.  10 501 games   190 8月  11 2015 tools

5、編譯安裝MySQL

1、安裝編譯 MySQL 依賴的包
[root@localhost mysql]# yum install -y ncurses-devel

MySQL5.7依賴的軟體包:gcc gcc-c++ ncurses ncurses-devel bison make等供參考,安裝前可以使用 rpm -qa |grep $ (軟體包名稱)檢查一下

2、建立安裝MySQL相關目錄
[root@localhost mysql]# mkdir  -p /database/mysql/{data,tmp,binlog,logs}
[root@localhost mysql]# tree -L 2 /database/
/database/
└── mysql
    ├── bin
    ├── data
    ├── logs
    └── tmp
5 directories, 0 files
     
3、建立MySQL組和使用者
[root@localhost mysql]# groupadd mysql
[root@localhost mysql]# useradd mysql -s /sbin/nologin -M -g mysql
[root@localhost mysql]# id mysql
uid=1000(mysql) gid=1000(mysql) 組=1000(mysql)

- s /sbin/nologin使用者不能登入系統

-M不建立使用者的HOME目錄

-g指定使用者登入組的GID或組名

4、解壓MySQL原始碼包
[root@localhost mysql]# cd /usr/local/src/mysql
[root@localhost mysql]# tar xf mysql-5.7.27.tar.gz
5、cmake編譯MySQL
[root@localhost mysql]# cd mysql-5.7.27
[root@localhost mysql-5.7.27]# cmake . -DCMAKE_INSTALL_PREFIX=/database/mysql \
-DMYSQL_DATADIR=/database/mysql/data \
-DMYSQL_UNIX_ADDR=/database/mysql/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0 \
-DWITH_BOOST=/usr/local/boost

看到如下資訊,說明cmake編譯完成

-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/src/mysql/mysql-5.7.27
6、安裝MySQL
[root@localhost mysql-5.7.27]# gmake && gmake install
...省略
Linking CXX executable  my_safe_process
[100%] Built target my_safe_process
7、MySQL安裝完成
...省略
-- Installing: /database/mysql/support-files/mysqld_multi.server
-- Installing: /database/mysql/support-files/mysql-log-rotate
-- Installing: /database/mysql/support-files/magic
-- Installing: /database/mysql/share/aclocal/mysql.m4
-- Installing: /database/mysql/support-files/mysql.server

如果上述操作未出現錯誤(每個步驟結束後,都可以使用echo $?看返回值是否為0,為0則表示正確),檢視/database/mysql/目錄,若其下有內容,則表示MySQL5.7.27原始碼包採用cmake方式安裝成功了

6、配置MySQL系統環境變數

[root@localhost ~]# echo 'export PATH=/database/mysql/bin:$PATH' >> /etc/profile
[root@localhost ~]# tail -1 /etc/profile
export PATH=/database/mysql/bin:$PATH

使/etc/profile配置檔案立即生效

[root@localhost ~]# source /etc/profile
[root@localhost ~]# echo  $PATH
/database/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

7、初始化 MySQL資料庫

1、更改MySQL安裝目錄的屬主和屬組
[root@localhost ~]# chown -R mysql:mysql /database/mysql/
2、修改 MySQL配置檔案的屬主和屬組
[root@localhost ~]# chown mysql:mysql /etc/my.cnf
3、修改MySQL配置檔案

修改/etc/my.cnf檔案,和5.6之前的版本不一樣,5.7版本support-files目錄下沒有.cnf檔案,因此,需要自己手動編輯

[root@localhost ~]# cp /etc/my.cnf /etc/my.cnf.bak
[root@localhost ~]# vi /etc/my.cnf

[client]
port = 3306
socket = /database/mysql/tmp/mysql.sock
default-character-set = utf8

[mysqld]
port = 3306
user = mysql
basedir = /database/mysql
datadir = /database/mysql/data
pid-file = /database/mysql/mysqld.pid
socket = /database/mysql/tmp/mysql.sock
tmpdir = /database/mysql/tmp
character_set_server = utf8
server-id = 1
max_connections = 100
max_connect_errors = 10
log-bin = /database/mysql/binlog/mysql-bin
log-error = /database/mysql/logs/mysql_5_7_27.err
4、初始化 MySQL資料庫
[root@localhost ~]# cd /database/mysql/
[root@localhost mysql]# ./bin/mysqld --initialize-insecure  --user=mysql --basedir=/database/mysql --datadir=/database/mysql/data

生成初始化密碼引數(5.7版本才有),必須要新增,否則會初始化失敗,會生成空密碼

--initialize-insecure

設定初始化使用者

--user=mysql

設定mysql工作目錄

--basedir=/database/mysql

設定資料檔案目錄

--datadir=/database/mysql/data
5、MySQL例項開啟SSL連線
[root@localhost mysql]# cd /database/mysql/
[root@localhost mysql]# ./bin/mysql_ssl_rsa_setup --initialize-insecure --user=mysql --basedir=/database/mysql --datadir=/database/mysql/data
6、修改server-key.pem檔案許可權
[root@localhost ~]# cd /database/mysql/data/
[root@localhost data]# chmod +r server-key.pem
[root@localhost data]# ls -l server-key.pem
-rw-r--r--. 1 root root 1679 12月 11 01:59 server-key.pem

7、啟動MySQL資料庫

拷貝啟動指令碼到/etc/init.d/目錄下,並改名mysqld

[root@localhost data]# cp support-files/mysql.server /etc/init.d/mysql
[root@localhost data]# ls -l /etc/init.d/mysql 
-rwxr-xr-x. 1 root root 10570 12月 11 02:01 /etc/init.d/mysql

重新載入系統服務,將MySQL資料庫加入開機自動

[root@localhost ~]# systemctl daemon-reload 
[root@localhost ~]# systemctl enable mysql
mysql.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysql on
[root@localhost ~]# chkconfig mysql on

啟動MySQL資料庫,並檢查埠監聽狀態

[root@localhost ~]# /etc/init.d/mysql start
Starting MySQL SUCCESS! 
[root@localhost ~]# systemctl start mysql

[root@localhost ~]# systemctl status mysql
● mysql.service - LSB: start and stop MySQL
   Loaded: loaded (/etc/rc.d/init.d/mysql; bad; vendor preset: disabled)
   Active: active (running) since 三 2020-12-16 16:41:16 CST; 22h ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/mysql.service
           ├─1016 /bin/sh /database/mysql/bin/mysqld_safe --datadir=/database/mysql/data --pid-file=/database/mysql/mysqld.pid
           └─1321 /database/mysql/bin/mysqld --basedir=/database/mysql --datadir=/database/mysql/data --plugin-dir=/database/my...

12月 16 16:41:15 localhost.localdomain systemd[1]: Starting LSB: start and stop MySQL...
12月 16 16:41:16 localhost.localdomain mysql[995]: Starting MySQL SUCCESS!
12月 16 16:41:16 localhost.localdomain systemd[1]: Started LSB: start and stop MySQL.

[root@localhost ~]# ss -anput | grep 3306
tcp    LISTEN     0      70     [::]:3306               [::]:*                   users:(("mysqld",pid=1321,fd=33))

[root@localhost mysql]#