Centos mysql-5.7.26一鍵安裝腳本

tar包,shell腳本百度雲盤鏈接,提取碼:i6a4

https://pan.baidu.com/s/19L5O0bR69HldSxoiDTgzcQ

安裝腳本如下

可參考https://blog.csdn.net/rzhidong/article/details/78432119

將安裝包、腳本、配置文件放在同一目錄

此腳本適用於centos6,centos7防火牆開放端口命令不一致,如需在centos7安裝,3306開啓命令改成

firewall-cmd --zone=public --add-port=3306/tcp --permanent

MySQL安裝路徑 /usr/local,安裝完後的臨時密碼在passwd.txt

腳本安裝完後執行下面,讓mysql環境變量生效

source /etc/profile
#!/bin/bash
# write by luozhidong
# date: 20190610
# description:默認路徑爲/usr/local,若要變更則修改MYSQL_HOME
# mysql包爲:mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
MYSQL_HOME='/usr/local'
#my-default.cnf參數檢查
checkCNF(){
	BASEDIR=$(cat $MYSQL_HOME/mysql/support-files/my-default.cnf |grep -v "#"|grep basedir)
	if [[ $(echo $BASEDIR|awk -F '=' '{print $2}')  != $MYSQL_HOME/mysql ]];then
        	sed -i "s|$BASEDIR|basedir = $MYSQL_HOME/mysql|g" $MYSQL_HOME/mysql/support-files/my-default.cnf
	fi
	DATADIR=$(cat $MYSQL_HOME/mysql/support-files/my-default.cnf |grep -v "#"|grep datadir)
	if [[ $(echo $DATADIR|awk -F '=' '{print $2}') != $MYSQL_HOME/mysql/data ]];then
        	sed -i "s|$DATADIR|datadir = $MYSQL_HOME/mysql/data|g" $MYSQL_HOME/mysql/support-files/my-default.cnf
	fi
	LOGDIR=$(cat $MYSQL_HOME/mysql/support-files/my-default.cnf |grep -v "#"|grep log)
        if [[ $(echo $LOGDIR|awk -F '=' '{print $2}') != $MYSQL_HOME/mysql/log/mysqld.log ]];then
                sed -i "s|$LOGDIR|log-error = $MYSQL_HOME/mysql/log/mysqld.log|g" $MYSQL_HOME/mysql/support-files/my-default.cnf
        fi
	PIDDIR=$(cat $MYSQL_HOME/mysql/support-files/my-default.cnf |grep -v "#"|grep pid)
        if [[ $(echo $PIDDIR|awk -F '=' '{print $2}') != $MYSQL_HOME/mysql/run/mysqld.pid ]];then
                sed -i "s|$PIDDIR|pid-file = $MYSQL_HOME/mysql/run/mysqld.pid|g" $MYSQL_HOME/mysql/support-files/my-default.cnf
        fi
}
#檢查其他庫文件並刪除
if [[ -n $(rpm -qa | grep mysql) ]];then
	rpm -qa | grep mysql|awk '{print $0}'|xargs rpm -e --nodeps
fi
#檢查mysql組
if [[ -z $(cat /etc/group|grep mysql) ]];then
	groupadd mysql
fi
#檢查mysql用戶
if [[ -z $(cat /etc/passwd | grep mysql) ]];then
	useradd -r -g mysql mysql
fi
id mysql
CHECK=$(ls $MYSQL_HOME |grep mysql)
if [[ -z $CHECK ]];then
	#解壓
	TARPATH=$(find . -name 'mysql*linux*.tar.gz')
	tar  -zvxf $TARPATH -C $MYSQL_HOME
    	mv $MYSQL_HOME/$(ls $MYSQL_HOME |grep mysql) $MYSQL_HOME/mysql
	mkdir -p $MYSQL_HOME/mysql/data $MYSQL_HOME/mysql/log $MYSQL_HOME/mysql/run
	touch $MYSQL_HOME/mysql/log/mysqld.log
	touch  $MYSQL_HOME/mysql/run/mysqld.pid
	#複製
	CNFPATH=$(find . -name 'my-default.cnf')
	cp $CNFPATH $MYSQL_HOME/mysql/support-files
	#參數檢查
	checkCNF
	#複製到etc
	cp $(find $MYSQL_HOME/mysql/ -name "my-default.cnf") /etc/my.cnf
	cp $(find $MYSQL_HOME/mysql/ -name "mysql.server") /etc/init.d/mysqld
	chown -R mysql:mysql $MYSQL_HOME/mysql/
	#環境變量
	echo "export PATH=$MYSQL_HOME/mysql/bin:\$PATH" >> /etc/profile
	#source /etc/profile
	#執行安裝
	$MYSQL_HOME/mysql/bin/mysqld_safe --initialize --user=mysql --basedir=$MYSQL_HOME/mysql --datadir=$MYSQL_HOME/mysql/data
	#$MYSQL_HOME/mysql/bin/mysqld --initialize --user=mysql --basedir=$MYSQL_HOME/mysql --datadir=$MYSQL_HOME/mysql/data
	#$MYSQL_HOME/mysql/bin/mysqld_safe --user=mysql &
	#自啓動
	chkconfig --add mysqld
	#臨時密碼
	#cat /var/log/mysqld.log |grep "temporary password"|awk -F':' '{print $4}'
	cat $MYSQL_HOME/mysql/log/mysqld.log |grep "temporary password"|awk -F'for' '{print $2}' > passwd.txt
	/etc/init.d/mysqld start
	#開啓3306端口(centos6)
	iptables -A INPUT -p tcp -m state --state  NEW  -m tcp --dport 3306 -j ACCEPT
	/etc/init.d/iptables save
fi
ps -ef |grep mysql|grep -v grep
echo "mysql installed.."
echo "temporary password: " $(cat $(find . -name 'passwd.txt')) 
sleep 1s
ps -ef |grep install_mysql|grep -v grep |awk '{print $2}'|xargs kill

my-default.cnf如下

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
 
[mysqld]
#log-bin=mysql-bin
 
[mysqld_safe]
log-error = /usr/local/mysql/log/mysqld.log
pid-file = /usr/local/mysql/run/mysqld.pid

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
 
 
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
 
 
# These are commonly set, remove the # and set as required.
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
# server_id = .....
# socket = .....
 
 
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M?
 
 
# 服務端使用的字符集默認爲8比特編碼的latin1字符集
character-set-server=utf8

# 取消密碼驗證
#skip-grant-tables
 
 
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章