#!/bin/bash
#author:zhangheng
#time:2020-5-12
#company:
#QQ:2417429827
#version:v1
####################################
#編譯安裝mysql 5.7.29
#os: centos7.8.2003
####################################
#第1步
#假定mysql的原始碼包已經上傳到linux伺服器裡的當前目錄下
#安裝解決軟體依賴關係的包
yum install cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel -y
#第2步:解壓src的rpm包
rpm -ivh mysql-community-5.7.29-1.el7.src.rpm
#第3步:進入/root/rpmbuild/SOURCES目錄
cd /root/rpmbuild/SOURCES
#第4步:新建使用者
useradd -r -s /sbin/nologin mysql
#第5步:新建數據目錄
mkdir -p /data/mysql
#第6步:修改數據目錄的擁有者爲mysql
chown mysql:mysql /data/mysql
#第7步:解壓真正的原始碼包
tar xf mysql-5.7.29.tar.gz
tar xf boost_1_59_0.tar.bz2
#將boost包移動到mysql解壓的包裡
mv boost_1_59_0 mysql-5.7.29
#第8步:進入解壓後的目錄
cd mysql-5.7.29
#第9步:編譯前的設定
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/sc_mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost_1_59_0
#第10步:編譯,啓動4個進程去編譯,加快速度
make -j 4
#第11步:安裝編譯好的二進制檔案到指定的目錄(即複製當前目錄下編譯好的二進制檔案到當時指定的目錄)
make install
#第12步:備份原來的my.cnf組態檔,然後清空這個檔案,這個檔案是mariadb的組態檔,不是mysql的
cp /etc/my.cnf /root/mysql.cnf.bak
>/etc/my.cnf
#第13步:進入編譯安裝好的mysql的目錄--》安裝目錄
cd /usr/local/sc_mysql/bin
#執行mysqld這個程式,初始化我們的mysql,並且將日誌和臨時密碼重定向到/root/temp_password.txt檔案裡
./mysqld --initialize --user=mysql --basedir=/usr/local/sc_mysql/ --datadir=/data/mysql &>/root/temp_password.txt
#第14步:修改PATH變數,在linux系統裡可以找到我們編譯安裝的mysql相關的命令
#/etc/profile /etc/bashrc /root/.bashrc /root/.bash_profile
#修改PATH變數,讓linux系統裡有mysql相關的命令
PATH=$PATH:/usr/local/sc_mysql/bin
echo 'PATH=$PATH:/usr/local/sc_mysql/bin' >>/etc/bashrc
#第15步:就是拷貝mysqld的程式檔案到指定的目錄,方便後面設定mysqld服務開機啓動--》mysqld服務的啓動、停止、重新啓動的指令碼
cp ../support-files/mysql.server /etc/init.d/mysqld
#第16步:關閉防火牆和selinux
#關閉防火牆firewalld服務
service firewalld stop
#設定firewalld服務開機不啓動
systemctl disable firewalld
#臨時關閉selinux
setenforce 0
#永久修改selinux組態檔裡的內容
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
#第17步:設定MySQL開機啓動
chkconfig mysqld on
#第18步:啓動MySQL
service mysqld start
#第19步:登錄進去MySQL並且重新設定密碼Sanchuang123#
#從儲存的臨時密碼檔案裡,擷取出臨時密碼,賦值給一個變數temp_pwd
temp_pwd=$(cat /root/temp_password.txt |tail -1|awk '{print $11}')
#給MySQL設定密碼爲Sanchuang123#
mysql -uroot -p$temp_pwd --connect-expired-password -e "set password='Sanchuang123#'"
echo '###### congratulation! your mysql has be installed successfully ######'