巡山小妖007

个人站

欢迎来到我的个人博客~


mysql8.0-autoinstall

提供一个自动安装mysql8.0的脚本

使用时,直接将以下内容复制到一个*.sh文本中,更改可执行权限后执行,按照提示操作

#!/bin/bash
############   一键安装 MySQL 8.0 脚本  ############
# Updates:可以在安装的时候更改root初始密码        #
#######################  END  ######################

function install(){
	#先把多余的卸载了
	unload
	cd ~
	U_mysqlUrl=https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
	#下载MySQL8.0的rpm包
	if [ -e "./mysql80-community-release-el7-1.noarch.rpm" ]
	then
		echo -e "\033[1;32m正在解压~~~\033[0m"
	else
		wget ${U_mysqlUrl}
		if [ $? -ne 0 ]
			then
			echo -e "\033[1;31m下载 MySQL 安装包失败,请检查您的网络!\033[0m"
			exit
		fi
	fi

	#解压rpm包 ##*/  表示删除最后一个/ 及其左边的字符
	rpm -Uvh ${U_mysqlUrl##*/}

	#安装MySQL8.0
	yum install mysql-server -y

	#启动MySQL
	echo -e "                  ************  \033[1;33m正在启动 MySQL\033[0m  *****************"
	systemctl start mysqld.service

	#查看状态
	a=$(systemctl status mysqld.service | grep Active)
	b=${a##*active}
	c=${b%% since*}
	d="(running)"
	if [ "$c" = "$d" ]
	then
		echo -e "             **************  \033[1;32mMySQL 启动成功\033[0m ******************"
	fi

	#找出初始密码,建立登录脚本
	findpass=$(grep 'temporary password' /var/log/mysqld.log)
	initpass=${findpass##* }
	rm -rf ~/.my.cnf
	touch ~/.my.cnf
	echo "[client]" > ~/.my.cnf
	echo "user=root" >> ~/.my.cnf
	echo "password=\"${initpass}\"" >> ~/.my.cnf
	#设置此登录文件只有所有者可以读写
	chmod 770 ~/.my.cnf

	#修改密码
	chose_pass
}

#修改密码
function chose_pass() {
	declare -i settime=0
	while [ ${settime} -lt 3 ]
	do
		read -p "是否现在修改 MySQL 的 root 密码?[y/n] " chose
		if [[ "$chose" = "n" || "$chose" = "N" ]]
		then
			notchk_pass
			exit
		elif [[ "$chose" = "y" || "$chose" = "Y" ]]
		then
			modify_pass
			((settime+=3))
			exit
		else
			echo -e "\033[1;33m请输入 y 或 n\033[0m"
		fi
		settime=$((++settime))			
	done
}
#不修改密码提示函数
function notchk_pass() {
	echo -e "\033[1;34;40mMySQL安装成功!!"
	echo "###############  请在输入命令 mysql 后进入数据库  ######################"
	echo "## 输入语句:ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';     #"
	echo "## 并在 ~/.my.cnf 文件中更新你的密码,以方便日后免密登录               #"
	echo "########################################################################"
	echo -e "\033[0m"
}

#修改密码操作函数
function modify_pass() {
	#如果密码格式不符合3次则退出
	declare -i chktime=0
	while [ ${chktime} -lt 3 ]
	do
		echo -e "\033[1;32m请输入您的新密码"
		read -p "至少一个大写字母、一个小写字符、数字和符号:" NEWPASS
		echo -e "\033[0m"	
				
		SQL="ALTER USER 'root'@'localhost' IDENTIFIED BY \"${NEWPASS}\";flush privileges;"
		mysql --connect-expired-password -e "${SQL}"
		if [ $? -eq 0 ]
		then
			#修改登录脚本
			rm -rf ~/.my.cnf
			touch ~/.my.cnf
			echo "[client]" > ~/.my.cnf
			echo "user=root" >> ~/.my.cnf
			echo "password=\"${NEWPASS}\"" >> ~/.my.cnf
			chmod 0600 ~/.my.cnf
			
			echo -e "\033[1;34;40mMySQL安装成功!!"
			echo "###############  请在输入命令 mysql 后进入数据库  ######################"
			echo "## 自动登录脚本:~/.my.cnf                                             #"
			echo "########################################################################"
			echo -e "\033[0m"
			rm -rf transfer.txt
			#设置对了直接退出
			((chktime+=4))
			exit
		fi
		chktime=$((++chktime))
		#第三次的时候提示并退出
		if [ ${chktime} -eq 3 ]
		then
			echo -e "\033[1;31m密码修改失败,请自行修改密码\033[0m"
			exit
		fi
	done
}

#卸载
function unload() {
	#停掉 MySQL 数据库
	systemctl stop mysqld.service
	#卸载各项服务
	yum remove mysql mysql-server mysql-libs compat-mysql51 -y
	#删除各个目录
	rm -rf /var/lib/mysql
	rm -rf /etc/my.cnf
	rm -rf /usr/share/mysql-8.0/
	touch list.txt
	#查一下继续卸载
	rpm -qa | grep mysql > list.txt
	for a in `cat list.txt`
	do
		yum remove $a -y
	done
	rm -rf list.txt
	#删除自动登录配置文件
	rm -rf ~/.my.cnf
	#删除日志文件
	rm -rf /var/log/mysqld.log
	#删除安装包
	#rm -rf ~/mysql80-community-release-el7-1.noarch.rpm
}

clear

echo -e "\033[1;36m############  欢迎使用一键安装 MySQL 8.0 脚本  ############\033[0m"
echo -e "\033[1;36m#                                                         #\033[0m"
echo -e "\033[1;36m#                    请保持网络畅通···                    #\033[0m"
echo -e "\033[1;36m#                                                         #\033[0m"
echo -e "\033[1;36m#                    1、安装 MySQL                        #\033[0m"
echo -e "\033[1;36m#                    2、卸载 MySQL                        #\033[0m"
echo -e "\033[1;36m#                    3、退出                              #\033[0m"
echo -e "\033[1;36m#                                                         #\033[0m"
echo -e "\033[1;36m###########################################################\033[0m"

declare -i style
read -p "请输入选项 [ 1 | 2 | 3 ]:" style

case "$style" in
1)
	#检查目录是否存在
	if [ -e "/var/lib/mysql80" ]
	then
		echo -e "\033[1;33m您的系统已安装 MySQL 数据库,请检查目录\033[0m"
	else
	install
	fi
	;;
2)
	unload
	;;
3)
	exit
	;;
*)
	echo -e "\033[5;32;40m参数错误!!!\033[0m"
	;;
esac

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦