MySQL編譯安裝:指令碼一鍵安裝

2020-08-12 17:52:15
#!/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 ######'