centos6 源碼安裝mysql5.6 centos7 源碼安裝mysql5.7

以前的Linux系統(tǒng)中數(shù)據(jù)庫(kù)大部分是mysql,不過自從被sun收購(gòu)之后,就沒用集成在centos這些開源Linux系統(tǒng)中了,那么如果想用的話就需要自己安裝了,首先centos7 已經(jīng)不支持mysql,因?yàn)槭召M(fèi)了你懂得,所以內(nèi)部集成了mariadb。centos7安裝mysql5.7跟之前的還是有些不一樣的地方容易踩坑 個(gè)人廢了些許時(shí)間才搞定 現(xiàn)記錄下來 給各位后人參考 避免踩坑!


ccentos6 源碼安裝mysql5.6可參考這篇文章http://blog.csdn.net/hardworking0323/article/details/51227801按步驟走 實(shí)測(cè)沒有問題


? ? ? ?本文是參考該文章后 修改的?centos7 源碼安裝mysql5.7 的正確步驟

部署環(huán)境?

操作系統(tǒng):CentOS-7x86_64-bin-DVD1.iso

MySQL 版本:mysql-5.7.21.tar.gz ? (ps:此處下載的是源碼包 ?MySQL Community Server 5.7.21 選擇sorce code

https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21.tar.gz

特別注意:操作之前需要對(duì)操作系統(tǒng)進(jìn)行網(wǎng)絡(luò)配置,防火墻關(guān)閉(centos7是firewalld),hostname設(shè)置,關(guān)閉 selinux(請(qǐng)修改/etc/selinux/config,將 SELINUX?改為 disabled)。

? ?? ?? ?? ?? ?? ?? ??此部分操作可參考mysql5.6安裝步驟。

一.卸載mariadb

1.rpm?-qa?|?grep mariadb 檢查數(shù)據(jù)庫(kù)自帶版本

2.rpm?-e?--nodeps mariadb-libs-5.5.37-1.el7_0.x86_64 ?強(qiáng)制卸載

二.創(chuàng)建用戶跟相關(guān)文件目錄

1、新增?mysql?用戶組:

?groupadd mysql

2、新增mysql用戶,并添加到mysql用戶組:

#useradd -r -g mysql mysql

3、新建?MySQL?執(zhí)行文件目錄(后面會(huì)把編譯好的?mysql?程序安裝到這個(gè)目錄):

#mkdir -p /usr/local/mysql

(-p參數(shù)的作用是:如果最終目錄的父目錄不存在也會(huì)一并創(chuàng)建)

?4、新建?MySQL?數(shù)據(jù)庫(kù)數(shù)據(jù)文件目錄:

#?mkdir -p /home/mysql/data

#?mkdir -p /home/mysql/logs

#?mkdir -p /home/mysql/temp

(注意:上面的logs?及temp?目錄是為了以后將MySQL?的數(shù)據(jù)文件與執(zhí)行程序文件分離,如果你打算設(shè)置到不同的路徑,注意修改對(duì)應(yīng)的執(zhí)行命令和數(shù)據(jù)庫(kù)初始化腳本。正式生產(chǎn)環(huán)?境,建議數(shù)據(jù)目錄和日志目錄都使用單獨(dú)的分區(qū)來掛載,不同分區(qū)屬于不同的磁盤或磁盤組。)

5、修改mysql目錄擁有者為mysql用戶:

#?chown -Rf mysql:mysql /usr/local/mysql

#?chown -Rf mysql:mysql /home/mysql

?6、增加?PATH?環(huán)境變量搜索路徑:?

#vi /etc/profile

##在profile文件末尾增加兩行

# mysql env param

PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH

export PATH

使?PATH?搜索路徑立即生效:

#source /etc/profile

三.安裝編譯

1、安裝編譯mysql需要的依賴包

yum install make cmake gcc gcc-c++ bison bison-devel ?ncurses ncurses-devel??autoconf ?automake

2.進(jìn)入/usr/local/src 下載后解壓源碼壓縮包

wget?https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21.tar.gz

tar -zxvfmysql-5.7.21.tar.gz

3.cmake操作前的boost下載解壓

centos7執(zhí)行cmake指令 會(huì)報(bào)錯(cuò) 需要自己下載安裝boost

(1)創(chuàng)建boost目錄?

mkdir -p /usr/local/boost

(2)進(jìn)入boost目錄后 下載解壓 ?

cd?/usr/local/boost

wget --no-check-certificate http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

tar -zxvf?boost_1_59_0.tar.gz

3.進(jìn)入mysql源碼解壓目錄 編譯安裝

1、進(jìn)入加壓目錄?

cd /usr/local/src/mysql-5.7.21

2.執(zhí)行cmake 指令

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql ?-DDEFAULT_CHARSET=utf8 ?-DDEFAULT_COLLATION=utf8_general_ci ?-DWITH_MYISAM_STORAGE_ENGINE=1 ?-DWITH_INNOBASE_STORAGE_ENGINE=1 ?-DWITH_ARCHIVE_STORAGE_ENGINE=1 ?-DWITH_BLACKHOLE_STORAGE_ENGINE=1 ?-DWITH_MEMORY_STORAGE_ENGINE=1 ?-DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 ?-DMYSQL_DATADIR=/home/mysql/data ?-DMYSQL_USER=mysql ?-DMYSQL_TCP_PORT=3306 ?-DENABLE_DOWNLOADS=1?

?-DWITH_BOOST=/usr/local/boost

配置解釋:?

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 設(shè)置安裝目錄?

-DMYSQL_DATADIR=/home/mysql/data 設(shè)置數(shù)據(jù)庫(kù)存放目錄?

-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock設(shè)置?UNIX socket 目錄

-DMYSQL_USER=mysql 設(shè)置運(yùn)行用戶?

-DDEFAULT_CHARSET=utf8 設(shè)置默認(rèn)字符集,默認(rèn)?latin1

-DEFAULT_COLLATION=utf8_general_ci 設(shè)置默認(rèn)校對(duì)規(guī)則,默認(rèn)?latin1_general_ci -DWITH_INNOBASE_STORAGE_ENGINE=1 添加?InnoDB 引擎支持

-DENABLE_DOWNLOADS=1 自動(dòng)下載可選文件,比如自動(dòng)下載谷歌的測(cè)試包?

-DMYSQL_TCP_PORT=3306 設(shè)置服務(wù)器監(jiān)聽端口,默認(rèn)?3306

-DSYSCONFDIR=/etc 設(shè)置?my.cnf 所在目錄,默認(rèn)為安裝目錄)?

cmake?結(jié)束后開始編譯源碼,這一步時(shí)間會(huì)較長(zhǎng),請(qǐng)耐心等待

3. 安裝編譯的源碼?

? make install

(注意:如果需要重裝mysql,在/usr/local/src/mysql-5.6.22在執(zhí)行下make install?就可以了,不需要再cmake?和make)

4. 清除臨時(shí)文件

?make clean

四.配置啟動(dòng)文件及環(huán)境變更

1.從模板文件復(fù)制啟動(dòng)文件

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

2.修改啟動(dòng)文件:

vim /etc/init.d/mysqld

找到如下二行:

basedir=datadir=

修改為:

basedir=/usr/local/mysql/datadir=/home/mysql/data

3.創(chuàng)建my.cnf ?mysql5.7后 模板文件 沒有my.cnf配置文件 需要自己創(chuàng)建

touch ?/etc/my.cnf

#vi /etc/my.cnf

[client]

port=3306

#socket=/usr/local/mysql/mysql.sock

socket=/tmp/mysql.sock

[mysqld]

character-set-server=utf8

collation-server=utf8_general_ci

skip-external-locking

skip-name-resolve

user=mysql

port=3306

basedir=/usr/local/mysql

datadir=/home/mysql/data

#server_id=...

#socket=/usr/local/mysql/mysql.sock

socket=/tmp/mysql.sock

log-error=/home/mysql/logs/mysql_error.log

pid-file=/home/mysql/mysql.pid

open_files_limit=10240

back_log=600

max_connections=500

max_connect_errors=6000

wait_timeout=605800

#open_tables=6000

#table_cache=650

#opened_talbes=630

max_allowed_packet=32M

sort_buffer_size=4M

join_buffer_size=4M

thread_cache_size=300

query_cache_type=1

query_cache_size=256

query_cache_limit=2M

query_cache_min_res_unit=16K

tmp_table_size=256M

max_heap_table_size=256M

key_buffer_size=256M

read_buffer_size=1M

read_rnd_buffer_size=16M

bulk_insert_buffer_size=64M

lower_case_table_names=1

default-storage-engine=INNODB

innodb_buffer_pool_size=512

innodb_log_buffer_size=32M

innodb_log_file_size=128M

innodb_flush_method=O_DIRECT

##########################

thread_concurrency=32

long_query_time=2

slow-query-log=on

slow-query-log-file=/home/mysql/logs/mysql-slow.log

[mysqldump]

quick

max_allowed_packet=32M

[mysql_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

其中innodb_buffer_pool_size的大小為分配內(nèi)存的三分之一到二分之一

四.啟動(dòng)mysql 并設(shè)置

1、啟動(dòng)mysql服務(wù)

service mysql start

ps:?此處可能報(bào)錯(cuò)?/home/mysql/logs/mysql_error.log 這個(gè)文件不存在 ?需要自己創(chuàng)建 并授權(quán)

也可以 systemctl start mysqld 啟動(dòng)mysql 但不會(huì)有提示

2.設(shè)置開機(jī)啟動(dòng)

chkconfig mysql on

或者

systemctl enable mysqld

3.查看root初始密碼 并修改

cat ?/home/mysql/logs/mysql_error.log |grep 'A temporary password'

可查詢出初始密碼 5.7后不再支持使用空密碼登錄 需要先查詢生成密碼

4.登錄修改初始化密碼

mysql -u root -p ?輸入初始化密碼

登錄后執(zhí)行以下命令

alert user 'root'@'localhost' identified by 'your password';

5.允許root遠(yuǎn)程登錄,設(shè)置遠(yuǎn)程登錄密碼

mysql>?GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH ?GRANT OPTION;

Query OK, 0 rows affected (0.00 sec)

mysql>?FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.01 sec)

注意:真實(shí)生產(chǎn)環(huán)境,應(yīng)用操作不要使用root用戶操作

6.運(yùn)行安全設(shè)置腳本,強(qiáng)烈建議生產(chǎn)服務(wù)器使用(可選)

[root@edu-mysql-01~]#/usr/local/mysql/bin/mysql_secure_installation?


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容