以前的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?

