CentOS7下源碼安裝MySQL5.6的過(guò)程

本篇內(nèi)容介紹了“CentOS 7下源碼安裝MySQL5.6的過(guò)程”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)公司專注于寧德網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供寧德?tīng)I(yíng)銷型網(wǎng)站建設(shè),寧德網(wǎng)站制作、寧德網(wǎng)頁(yè)設(shè)計(jì)、寧德網(wǎng)站官網(wǎng)定制、微信平臺(tái)小程序開發(fā)服務(wù),打造寧德網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供寧德網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

目錄

準(zhǔn)備工作

運(yùn)行環(huán)境

確認(rèn)要安裝的版本

下載MySQL

安裝MySQL

準(zhǔn)備安裝環(huán)境

編譯和安裝

配置MySQL

單實(shí)例配置

單實(shí)例配置方法

添加防火墻

啟動(dòng)MySQL

重啟MySQL

多實(shí)例配置

什么是多實(shí)例

多實(shí)例配置方法

創(chuàng)建啟動(dòng)文件

初始化數(shù)據(jù)庫(kù)

配置防火墻

啟動(dòng)MySQL

登陸MySQL

重啟MySQL

準(zhǔn)備工作

運(yùn)行環(huán)境

本文的運(yùn)行環(huán)境如下

系統(tǒng)版本

CentOS 7最小化安裝:

Linux version 3.10.0-123.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.2 20140120 (Red Hat 4.8.2-16) (GCC) ) #1 SMP Mon Jun 30 12:09:22 UTC 2014

mysql版本

mysql-5.6.25


確認(rèn)要安裝的版本

mysql分為開發(fā)版本和穩(wěn)定版本(GA),開發(fā)版本擁有最新的特性,但是并不穩(wěn)定,也沒(méi)有完全經(jīng)過(guò)測(cè)試,可能存在嚴(yán)重的bug,而穩(wěn)定版本是經(jīng)過(guò)了長(zhǎng)時(shí)間的測(cè)試,消除了具有已知的bug,其穩(wěn)定性和安全性都得到一定的保障。

對(duì)于一個(gè)mysql的版本號(hào)如:mysql-5.6.1-m1,這個(gè)版本號(hào)意味著什么呢?
1.對(duì)于5.6.1的解釋:第一個(gè)數(shù)字5代表了文件格式,第二個(gè)數(shù)字6代表了發(fā)行級(jí)別,第三個(gè)數(shù)字1代表了版本號(hào)。更新幅度較小時(shí),最后的數(shù)字會(huì)增加,出現(xiàn)了重大特性更新時(shí),第二個(gè)數(shù)字會(huì)增加,文件格式改變時(shí),第一個(gè)數(shù)字會(huì)增加
2. 對(duì)于m1的解釋:這是用來(lái)表明這個(gè)mysql版本的穩(wěn)定性級(jí)別的,如果沒(méi)有這個(gè)后綴,那么這個(gè)版本就是一個(gè)穩(wěn)定版(GA);如果這個(gè)后綴是mN(例如 m1,m2)格式,表明了這個(gè)版本加入了一些經(jīng)過(guò)徹底測(cè)試的新特性,可以認(rèn)為這是一個(gè)試生產(chǎn)的模具;如果這個(gè)后綴是rc,表明了這是一個(gè)候選版本,已經(jīng)修 改了已知的重要bug,但是沒(méi)有經(jīng)過(guò)足夠長(zhǎng)時(shí)間的使用來(lái)確認(rèn)所有的bug已經(jīng)被修復(fù)。

一旦選擇了版本號(hào),就要選擇使用哪個(gè)發(fā)行版,你可以使用二進(jìn)制發(fā)行版如RPM包或Zip壓縮包等,但是如果你要實(shí)現(xiàn)如下的功能,就要選擇源碼安裝(本文正是選擇源碼安裝的方式):
1.l把mysq安裝到指定位置
2.l使用mysql的一些特性(標(biāo)準(zhǔn)的二進(jìn)制版本中并沒(méi)有這些特性)如:TCP封包支持,調(diào)試mysql
3.二進(jìn)制版本中默認(rèn)支持所有的字符集,但你可以在編譯安裝源碼時(shí)指定字符集,從而使得安裝的mysql更小

下載MySQL

在這里下載mysql:http://dev.mysql.com/downloads/mysql/

我選擇的是這個(gè):

CentOS 7下源碼安裝MySQL5.6的過(guò)程

CentOS 7下源碼安裝MySQL5.6的過(guò)程

下載完后需要檢查文件的MD5,以確認(rèn)是否從官網(wǎng)下載的原版本(以防被人篡改過(guò)該軟件)

從windows下載后上傳到linux后,使用md5sum命令來(lái)檢查:

[root@localhost src]# md5sum mysql-5.6.25.tar.gz
37664399c91021abe070faa700ecd0ed mysql-5.6.25.tar.gz

可以看出,與上圖中的MD5是一致的,如果不一致,就要更換一個(gè)鏡像地址來(lái)下載mysql。

安裝MySQL

準(zhǔn)備安裝環(huán)境

首先檢查是否已經(jīng)安裝過(guò)mysql:

[root@localhost src]# rpm -qa | grep mysql

有的話就卸載掉以前安裝的mysql:

[root@localhost src]# rpm -e --nodeps xxx(xxx是搜索結(jié)果)

并刪除所有的相關(guān)文件:

/etc/my.cnf

編譯和安裝

安裝編譯代碼所需要的包

[root@localhost src]# yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio libaio-devel perl-Data-Dumper net-tools

解壓安裝包并編譯安裝

[root@localhost src]# tar xvf mysql-5.6.25.tar.gz
[root@localhost src]# cd mysql-5.6.25
[root@localhost mysql-5.6.25]#cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

CentOS 7下源碼安裝MySQL5.6的過(guò)程

編譯成功

[root@localhost src]# make && make install

至此,mysql安裝完成

配置MySQL

檢查系統(tǒng)是否已經(jīng)有mysql用戶,如果沒(méi)有則創(chuàng)建

[root@localhost mysql-5.6.25]# cat /etc/passwd | grep mysql
[root@localhost mysql-5.6.25]# cat /etc/group | grep mysql

創(chuàng)建mysql用戶(但是不能使用mysql賬號(hào)登陸系統(tǒng))

[root@localhost mysql-5.6.25]# groupadd mysql -s /sbin/nologin
[root@localhost mysql-5.6.25]# useradd -g mysql mysql

修改權(quán)限

[root@localhost mysql-5.6.25]# chown -R mysql:mysql /usr/local/mysql

至此,mysql安裝完畢

下面有兩種配置方式,推薦按照多實(shí)例配置的方式

單實(shí)例配置

單實(shí)例配置方法

進(jìn)入安裝路徑

[root@localhost mysql-5.6.25]# cd /usr/local/mysql

進(jìn)入安裝路徑,執(zhí)行初始化配置腳本,創(chuàng)建系統(tǒng)自帶的數(shù)據(jù)庫(kù)和表

[root@localhost mysql]# scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql

注:在啟動(dòng)MySQL服務(wù)時(shí),會(huì)按照一定次序搜索my.cnf,先在/etc目錄下找,找不到則會(huì)搜索"$basedir/my.cnf",在本例中就是 /usr/local/mysql/my.cnf,這是新版MySQL的配置文件的默認(rèn)位置!

注意:在CentOS 7版操作系統(tǒng)的最小安裝完成后,在/etc目錄下會(huì)存在一個(gè)my.cnf,需要將此文件更名為其他的名字,如:/etc/my.cnf.bak,否則,該文件會(huì)干擾源碼安裝的MySQL的正確配置,造成無(wú)法啟動(dòng)。

在使用"yum update"更新系統(tǒng)后,需要檢查下/etc目錄下是否會(huì)多出一個(gè)my.cnf,如果多出,將它重命名成別的。否則,MySQL將使用這個(gè)配置文件啟動(dòng),可能造成無(wú)法正常啟動(dòng)等問(wèn)題。

添加防火墻

[root@localhost mysql]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@localhost mysql]# firewall-cmd --reload
 

啟動(dòng)mysql

添加服務(wù),拷貝服務(wù)腳本到init.d目錄,并設(shè)置開機(jī)啟動(dòng)

[root@localhost mysql]# cp support-files/mysql.server /etc/init.d/mysql
[root@localhost mysql]# chkconfig mysql on
[root@localhost mysql]# service mysql start --啟動(dòng)MySQL

查看mysql是否啟動(dòng)成功

[root@localhost mysql]# netstat -lntp | grep 3306

如果mysql沒(méi)有啟動(dòng)成功,到目錄/usr/local/mysql/data下查看錯(cuò)誤日志

[root@localhost data]# tail localhost.localdomain.err (localhost.localdomain是主機(jī)名)

如果沒(méi)有生成日志目錄,則mysql安裝沒(méi)有成功(再重新編譯安裝一次)

重啟mysql

首先殺死m(xù)ysql進(jìn)程

[root@localhost 3306]# pkill mysqld

然后檢查是否已經(jīng)殺死m(xù)ysql進(jìn)程

[root@localhost 3306]# netstat -lntp | grep 3306

此時(shí)shell沒(méi)有任何輸出,表明已經(jīng)殺死了mysql進(jìn)程

然后重啟mysql并再次檢查是否啟動(dòng)成功

[root@localhost 3306]# service mysql start
[root@localhost 3306]# netstat -lntp | grep 3306

多實(shí)例配置

什么是多實(shí)例

簡(jiǎn)單地說(shuō),就是在一臺(tái)機(jī)器上開啟多個(gè)不同的服務(wù)端口,運(yùn)行多個(gè)mysql服務(wù)進(jìn)程,這些服務(wù)進(jìn)程通過(guò)不同socket監(jiān)聽(tīng)不同服務(wù)端口來(lái)提供各自的服務(wù)。

這些mysql多實(shí)例公用一套mysql安裝程序,使用不同的my.cnf配置文件、啟動(dòng)程序、數(shù)據(jù)文件,在提供服務(wù)時(shí),多實(shí)例在邏輯上看起來(lái)是各自獨(dú)立的,多個(gè)實(shí)例之間根據(jù)配置文件的設(shè)定值,來(lái)取得相關(guān)服務(wù)器的硬件資源

多實(shí)例配置方法

在本文中,通過(guò)在mysql上開啟兩個(gè)端口(3306和3307來(lái)配置多實(shí)例,因?yàn)橄旅娴闹鲝耐揭褂眠@兩個(gè)端口來(lái)模擬)

創(chuàng)建目錄(log目錄是存放mysql日志的地方)

[root@localhost mysql]# mkdir -p /data/{3306,3307}/data
[root@localhost mysql]# mkdir -p /data/{3306,3307}/log

在/data/3306中新建my.cnf

[root@localhost mysql]# cd /data/3306
[root@localhost mysql]# vim my.cnf

把如下內(nèi)容拷貝到該文件中 

[client]
port = 3306
socket = /data/3306/mysql.sock

[mysqld]
port=3306
socket = /data/3306/mysql.sock
pid-file = /data/3306/data/mysql.pid
basedir = /usr/local/mysql
datadir = /data/3306/data
server-id=1
#log-bin=mysql-bin
#log-bin-index= mysql-bin.index

# LOGGING
log_error=/data/3306/log/mysql-error.log
slow_query_log_file=/data/3306/log/mysql-slow.log
slow_query_log=1

同樣地,在/data/3307中新建my.cnf

[root@localhost mysql]# cd /data/3307
[root@localhost mysql]# vim my.cnf

把如下內(nèi)容拷貝到該文件中(把上面的3306改為3307,還有server-id的值)

[client]
port = 3307
socket = /data/3307/mysql.sock

[mysqld]
port=3307
socket = /data/3307/mysql.sock
pid-file = /data/3307/data/mysql.pid
basedir = /usr/local/mysql
datadir = /data/3307/data
server-id=3
#log-bin=mysql-bin
#log-bin-index= mysql-bin.index

# LOGGING
log_error=/data/3307/log/mysql-error.log
slow_query_log_file=/data/3307/log/mysql-slow.log
slow_query_log=1

檢查一下目錄結(jié)構(gòu),看看有沒(méi)有把文件放錯(cuò)地方

[root@localhost 3307]# tree /data
/data
├── 3306
│ ├── data
│ ├── log
│ └── my.cnf

└── 3307
│ ├── data
│ ├── log
│ └── my.cnf

創(chuàng)建啟動(dòng)文件

在/data/3306中新建mysql啟動(dòng)文件

[root@localhost mysql]# cd /data/3306
[root@localhost mysql]# vim mysql

把如下內(nèi)容拷貝到該文件中

#!/bin/sh
port=3306
mysql_user="root"
mysql_pwd=""
CmdPath="/usr/local/mysql/bin"

#startup function

function_start_mysql()
{
printf "Starting MySQL...\n"
/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &
}

#stop function

function_stop_mysql()
{
printf "Stoping MySQL...\n"
${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown
}

#restart function

function_restart_mysql()
{
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 2
function_start_mysql
}

case $1 in
start)
function_start_mysql
;;

stop)
function_stop_mysql
;;

restart)
function_restart_mysql
;;
*)

printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
esac

同理,在/data/3307中新建mysql啟動(dòng)文件

[root@localhost mysql]# cd /data/3307
[root@localhost mysql]# vi mysql


把如下內(nèi)容拷貝到該文件中

#!/bin/bash

port=3307
mysql_user="root"
mysql_pwd=""
CmdPath="/usr/local/mysql/bin"

#startup function

function_start_mysql()
{
printf "Starting MySQL...\n"
/bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 > /dev/null &
}

#stop function

function_stop_mysql()
{
printf "Stoping MySQL...\n"

${CmdPath}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S /data/${port}/mysql.sock shutdown
}

#restart function

function_restart_mysql()
{
printf "Restarting MySQL...\n"

function_stop_mysql
sleep 2
function_start_mysql
}

case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: /data/${port}/mysql {start|stop|restart}\n"
esac

修改文件擁有者和權(quán)限

[root@localhost 3307]# chown -R mysql:mysql /data

[root@localhost 3307]# find /data -name mysql -exec chmod 700 {} \;


添加mysql啟動(dòng)路徑

[root@localhost 3307]# echo 'export PATH=$PATH:/usr/local/mysql/bin' >>/etc/profile

[root@localhost 3307]# source /etc/profile

[root@localhost 3307]# echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin

可以看到mysql路徑已經(jīng)添加到了啟動(dòng)路徑中

初始化數(shù)據(jù)庫(kù)

[root@localhost scripts]# cd /usr/local/mysql/scripts

[root@localhost scripts]# ./mysql_install_db --defaults-file=/data/3306/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/3306/data

[root@localhost scripts]# ./mysql_install_db --defaults-file=/data/3307/my.cnf --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data

配置防火墻

[root@localhost scripts]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success

[root@localhost scripts]# firewall-cmd --zone=public --add-port=3307/tcp --permanent
success

[root@localhost scripts]# firewall-cmd --reload
success

啟動(dòng)mysql

分別啟動(dòng)兩個(gè)端口

[root@localhost scripts]# /data/3306/mysql start
Starting MySQL...

[root@localhost scripts]# /data/3307/mysql start
Starting MySQL...

[root@localhost scripts]# netstat -lntp | grep 330
tcp6 0 0 :::3306 :::* LISTEN 33556/mysqld
tcp6 0 0 :::3307 :::* LISTEN 34204/mysqld

可以看到兩個(gè)端口都已經(jīng)啟動(dòng)成功

登陸MySQL

剛安裝完的mysql是沒(méi)有登陸密碼的

[root@localhost scripts]# mysql -S /data/3306/mysql.sock

如果不成功,檢查/data/3306/log目錄下的mysql-error.log日志,逐一排除錯(cuò)誤

如果登陸成功,下面就修改登錄密碼(不建議在shell環(huán)境下修改密碼,否則別人只要查看命令歷史就能看到密碼(前提是你沒(méi)有情況命令歷史))

mysql> update mysql.user set password=password("123456") where user='root';
mysql> flush privileges;

同理,使用上面的方法修改3307的登陸密碼

要把上面更改后的密碼寫回到mysql的啟動(dòng)文件中(否則每次啟動(dòng)、關(guān)閉、重啟mysql都要輸入密碼)

[root@localhost 3306]# sed -i 's/mysql_pwd=\"\"/mysql_pwd=\"123456\"/g' /data/3306/mysql
[root@localhost 3306]# sed -i 's/mysql_pwd=\"\"/mysql_pwd=\"123456\"/g' /data/3307/mysql

注意把上面的123456改為設(shè)置的密碼

重啟mysql

[root@localhost 3306]# /data/3306/mysql restart
[root@localhost 3306]# netstat -lntp | grep 330
tcp6 0 0 :::3306 :::* LISTEN 35430/mysqld

可以看到3306端口重啟成功,同理可以重啟3307端口

至此,mysql-5.6.25在CentOS7上安裝完畢

“CentOS 7下源碼安裝MySQL5.6的過(guò)程”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

網(wǎng)站欄目:CentOS7下源碼安裝MySQL5.6的過(guò)程
標(biāo)題路徑:http://muchs.cn/article48/ipighp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、域名注冊(cè)外貿(mào)建站、網(wǎng)站內(nèi)鏈、自適應(yīng)網(wǎng)站、企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷型網(wǎng)站建設(shè)