1. 程式人生 > 其它 >Linux MySQL 編譯安裝 詳細解析

Linux MySQL 編譯安裝 詳細解析

技術標籤:資料庫管理linuxmysql資料庫

MySQL 安裝 需要先關閉防火牆selinux

編譯安裝MySQL 5.7

1,清理安裝環境

# yum erase mariadb mariadb-server mariadb-libs mariadb-devel  -y
# userdel -r mysql
# rm -rf /etc/my*
# rm -rf /var/lib/mysql

2,建立MySQL使用者

# useradd -r mysql -M -s /bin/false

3,從官網下載tar包

# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.27.tar.gz

4,安裝編譯工具

# yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make cmake

5,建立MySQL目錄

mkdir -p /usr/local/{data,mysql,log}

6,解壓

# tar xzvf mysql-boost-5.7.27.tar.gz -C /usr/local/

注:如果安裝的MySQL5.7及以上的版本,在編譯安裝之前需要安裝boost,因為高版本mysql需要boots庫的安裝才可以正常執行。
否則會報CMake Error at cmake/boost.cmake:81錯誤
安裝包裡面自帶boost包
Boost庫是為C++語言標準庫提供擴充套件的一些C++程式庫

7,編譯安裝

cd 進解壓的 MySQL 目錄下
# cd /usr/local/mysql-5.7.27/
# cmake . /
-DWITH_BOOST=boost/boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DINSTALL_MANDIR=/usr/share/man \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1

# echo $? \檢視是否安裝完成    
0

提示:boost也可以使用如下指令自動下載,如果不下載bost壓縮包,把下面的這一條新增到配置中第二行
-DDOWNLOAD_BOOST=1/

引數詳解:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
\   安裝目錄
-DSYSCONFDIR=/etc 
\   配置檔案存放 (預設可以不安裝配置檔案)
-DMYSQL_DATADIR=/usr/local/mysql/data 
\   資料目錄   錯誤日誌檔案也會在這個目錄
-DINSTALL_MANDIR=/usr/share/man 
\   幫助文件 
-DMYSQL_TCP_PORT=3306 
\   預設埠
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock 
\   sock檔案位置,用來做網路通訊的,客戶端連線伺服器的時候用
-DDEFAULT_CHARSET=utf8 
\   預設字符集。字符集的支援,可以調
-DEXTRA_CHARSETS=all 
\   擴充套件的字符集支援所有的
-DDEFAULT_COLLATION=utf8_general_ci 
\   支援的
-DWITH_READLINE=1 
\   上下翻歷史命令
-DWITH_SSL=system 
\   使用私鑰和證書登陸(公鑰)  可以加密。 適用與長連線。壞處:速度慢
-DWITH_EMBEDDED_SERVER=1 
\   嵌入式資料庫
-DENABLED_LOCAL_INFILE=1 
\   從本地倒入資料,不是備份和恢復。
-DWITH_INNOBASE_STORAGE_ENGINE=1  
\   預設的儲存引擎,支援外來鍵

如果沒有出錯就執行 make install
需要很長時間,預估半小時左右

# make && make install

如果安裝出錯,想重新安裝,不用重新解壓,
只需要刪除安裝目錄中的快取檔案 CMakeCache.txt

8,初始化

# cd /usr/local/mysql
# chown -R mysql.mysql  .
# ./bin/mysql  --initalize  --user=mysql  --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data  
初始化生成的密碼,一定要記住

9,編輯資料庫的基礎配置檔案

# vim /etc/my.cnf    \將裡面的內容備份之後,裡面的內容清除新增以下內容
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8

[mysqld]
port = 3306
user = mysql
basedir = /usr/local/mysql  
datadir = /usr/local/mysql/data   
socket = /tmp/mysql.sock
character_set_server = utf8

引數詳解
[client]
port = 3306
 \  預設連線埠
socket = /tmp/mysql.sock
 \  用於本地連線的socket套接字
default-character-set = utf8
 \  編碼

[mysqld]
port = 3306
 \  服務埠號,預設3306
user = mysql
 \  mysql啟動使用者
basedir = /usr/local/mysql
 \  mysql安裝根目錄
datadir = /usr/local/mysql/data
 \  mysql資料檔案所在位置
socket = /tmp/mysql.sock
 \  為MySQL客戶端程式和伺服器之間的本地通訊指定一個套接字檔案
character_set_server = utf8
 \  資料庫預設字符集,主流字符集支援一些特殊表情符號(特殊表情符佔用4個位元組)

**10,啟動MySQL並後臺執行 並檢視埠號3306 檢視MySQL版本 **

# cd /usr/local/mysql
# ./bin/mysql_safe  --user=mysql  &
# netstat -tnlp | grep  3306
tcp6  0  0 :::3306   :::*   LISTEN  54513/mysqld

mysql --version   \檢視版本號
mysql  Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using  EditLine wrapper

11,登入MySQL資料庫

# /usr/local/mysql/bin/mysql -uroot -p'初始化記住的密碼'

mysql> exit

12,修改密碼

在命令列修改密碼
/usr/local/mysql/bin/mysqladmin -u root -p'初始化時的密碼'  password '[email protected]'

在資料庫裡修改密碼
mysql> alter user 'root'@'localhost' identified by '[email protected]';

13,新增環境變數

# vim /etc/profile  \新增如下
PATH=$PATH:$HOME/bin:/usr/local/mysql/bin

# source  /etc/profile  \更新變數

# mysql -uroot -p'[email protected]'   \登入資料庫
mysql>exit

14,配置mysqld服務的管理工具

# cd /usr/local/mysql/support-files/
# cp mysql.server /etc/init.d/mysqld
# chkconfig --add mysqld
# chkconfig  mysqld  on
先將原來的MySQL服務程序殺掉
# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
# /netstat  -lntp
# /etc/init.d/mysqld stop

小節

編譯安裝:
# ls
COPYING       README       bin   include  mysql-test  support-files
COPYING-test  README-test  docs  lib      share

1、bin目錄
用於放置一些可執行檔案,如mysql、mysqld、mysqlbinlog等。
2、include目錄
用於放置一些標頭檔案,如:mysql.h、mysql_ername.h等。
3、lib目錄
用於放置一系列庫檔案。
4、share目錄
用於存放字符集、語言等資訊。

資料庫編譯安裝完成