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]#