0
点赞
收藏
分享

微信扫一扫

shell安装mysql(rpm版)

#!/bin/bash
<<INFO
AUTHOR:运维@小兵
DATE:2021-08-07
DESCRIBE:rpm方式安装MySQL
SYSTEM:CentOS7/RedHat7
WARNING:
MODIFY:
INFO

set -e
source /etc/profile #避免ansible远程执行shell获取环境变量不一致的问题

WORKDIR=$(cd `dirname $0`;pwd) #脚本所在路径
echo "Current Excute: bash ${WORKDIR}/$0 $@"

MYSQL_DATA=$2 #Mysql数据目录
MYSQL_IP=$3
MYSQL_PORT=$4
MYSQL_ADMIN_USER=$5
MYSQL_ADMIN_PWD=$6


#环境检查
Check_Env(){
echo "INFO:Begin Check Env..."
if ss -nutlp | egrep -w ":${MYSQL_PORT}\b" &> /dev/null;then
echo "INFO:Mysql Is Installed" && exit 0
fi
[[ ! -d ${WORKDIR}/rpms ]] && echo "ERROR:${WORKDIR}/rpms Not Found" && exit 1
if [[ ! -f ${MYSQL_DATA}/mysqld.cnf ]];then
echo "ERROR:${MYSQL_DATA}/mysqld.cnf Not Found" && exit 1
fi
}

#安装MySQL
Install_Mysql(){
Check_Env
echo "INFO:Begin Install Mysql Server..."
rpm -ivh ${WORKDIR}/rpms/*.rpm --nodeps --force
[[ ! -f /etc/my.cnf.bak ]] && cp /etc/my.cnf{,.bak}
\cp ${MYSQL_DATA}/mysqld.cnf /etc/my.cnf
systemctl start mysqld
systemctl enable mysqld
}

#修改Mysql的root密码
Modify_Root_Pwd(){
local init_password=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}' | tail -n1)
mysql -uroot -p"${init_password}" --connect-expired-password -e "set password=password('${MYSQL_ADMIN_PWD}')"
mysql -uroot -p"${MYSQL_ADMIN_PWD}" -e "create USER if NOT EXISTS ${MYSQL_ADMIN_USER}@'%' identified by '${MYSQL_ADMIN_PWD}';"
mysql -uroot -p"${MYSQL_ADMIN_PWD}" -e "grant all privileges on *.* to ${MYSQL_ADMIN_USER}@'%' WITH GRANT OPTION;"
mysql -uroot -p"${MYSQL_ADMIN_PWD}" -e "flush privileges;"
if ! mysql -h${MYSQL_IP} -P${MYSQL_PORT} -u${MYSQL_ADMIN_USER} -p${MYSQL_ADMIN_PWD} -e 'show databases;' &> /dev/null;then
echo "ERROR:Install Mysql Server Fail" && exit 1
else
echo "INFO:Install Mysql Server Success"
fi
}

#卸载MySQL
Uninstall_Mysql(){
if ! ss -nutlp | egrep -w ":${MYSQL_PORT}\b" &> /dev/null;then
echo "INFO:Mysql Is Uninstalled" && exit 0
else
systemctl stop mysqld
yum remove mysql-community-server -y
rm -rf /var/lib/mysql
rm -f /etc/my.cnf
rm -f /var/log/mysqld.log
if ! ss -nutlp | egrep -w ":${MYSQL_PORT}\b" &> /dev/null;then
echo "INFO:Uninstall Mysql Success"
else
echo "ERROR:Uninstall Mysql Fail" && exit 1
fi
fi
}

######################主程序######################
[[ $# -ne 6 ]] && echo "ERROR:Invalid Param!!! eg:bash $0 (install|uninstall) mysql数据目录 mysql_ip mysql端口 mysql管理员 mysql管理员密码" && exit 1
case $1 in
install)
Install_Mysql
Modify_Root_Pwd;;
uninstall)
Uninstall_Mysql;;
*)
echo "ERROR:Invalid Param!!! eg:bash $0 (install|uninstall) mysql数据目录 mysql_ip mysql端口 mysql管理员 mysql管理员密码" && exit 1
esac


举报

相关推荐

0 条评论