Linux一键安装,卸载MySQL Shell脚本

一键安装卸载mysql脚本使用说明

环境和版本

操作系统:Centos7
mysql版本:MySQL5.7

上源码

配置configuration.sh

#!/bin/bash

#下载资源保存路径
download=/home/mysql
#rpm源文件名。例如:mysql57-community-release-el7-11.noarch.rpm
rpmsource=mysql57-community-release-el7-11.noarch.rpm

shell脚本onekeyMysql.sh

#!/bin/bash

#重置 MySQL root 密码 
reset_mysql_root_password(){
# Check if user is root
if [ $(id -u) != "0" ]; then
    echo "must root"
    exit 1
fi
 
echo "+-------------------------------------------------------------------+"
echo "|                                                                   |"
echo "|                      重置 MySQL root 密码                         |"
echo "|                                                                   |"
echo "+-------------------------------------------------------------------+"
echo "正在尝试启动mysql...";
service mysqld start;
if [ $? -eq 0 ]; then
    DB_Name="mysql"
    DB_Version=`mysql --help |grep Distrib`
else
    echo "MySQL not found!"
    exit 1
fi
 
while :;do
    DB_Root_Password=""
    read -p "[请输入数据库新密码]Enter New ${DB_Name} root password: " DB_Root_Password
    if [ "${DB_Root_Password}" = "" ]; then
        echo "[密码不能为空!]Error: Password can't be NULL!!"
    else
        break
    fi
done

while :;do
    DB_yuancheng_Password=""
    read -p "请输入新的远连接数据库密码: " DB_yuancheng_Password
    if [ "${DB_yuancheng_Password}" = "" ]; then
        echo "[密码不能为空!]Error: Password can't be NULL!!"
    else
        break
    fi
done
 
echo "停止运行 ${DB_Name}..."
command=`service mysqld stop`;
echo "启动 ${DB_Name} with skip grant tables"
command=`echo -e "\nskip-grant-tables" >> /etc/my.cnf`;
if [ $? -eq 0 ]; then
	command=`service mysqld start`;
fi
echo "正在更新 ${DB_Name} root 的密码..."
#if echo "${DB_Version}" | grep -Eqi '^8.0.|^5.7.|^10.[234].'; then
if true; then
    mysql -u root << EOF
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '${DB_Root_Password}';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '${DB_yuancheng_Password}' WITH GRANT OPTION;
EOF
#暂时用不上
else
    mysql -u root << EOF
update mysql.user set password = Password('${DB_Root_Password}') where User = 'root';
EOF
fi
 
if [ $? -eq 0 ]; then
    echo "密码更新成功。现在关闭mysql服务。。。";
    command=`sed -i '$d' /etc/my.cnf`;#删除最后一行
    command=`sed -i '$d' /etc/my.cnf`;
    command=`grep "character_set_server=utf8" /etc/my.cnf`;#匹配查找
    if [ $? -ne 0 ]; then
     command=`echo -e "\ncharacter_set_server=utf8" >> /etc/my.cnf`;#最后一行追加
    fi
    command=`grep "init_connect='SET NAMES utf8'" /etc/my.cnf`;
    if [ $? -ne 0 ]; then
     command=`echo -e "\ninit_connect='SET NAMES utf8'" >> /etc/my.cnf`;
    fi
    if command -v killall >/dev/null 2>&1; then
        killall mysqld
    else
        kill `pidof mysqld`
    fi
    sleep 5
    echo "正在启动${DB_Name}。。。";
    echo "";
    command=`service mysqld start`;
    echo "密码成功修改为: '${DB_Root_Password}'"
    echo "远程连接数据库密码为:‘${DB_yuancheng_Password}’";
else
    command=`sed -i '$d' /etc/my.cnf`;
    command=`sed -i '$d' /etc/my.cnf`;
    echo "Reset ${DB_Name} root password failed!";
    exit 1;
fi

}


#安装
install(){
#检测是否已安装mysql
service mysqld start
if [ $? -eq 0 ]; then
        echo "已安装mysql";
	echo "检测到系统已安装mysql!请先卸载!";
	exit 1;
else
        echo "未安装mysql";
fi

echo "+-------------------------------------------------------------------+"
echo "|                                                                   |"
echo "|                            安装 MySQL                             |"
echo "|                                                                   |"
echo "+-------------------------------------------------------------------+"

#安装wget
#引入配置
source ./configuration.sh;
#获取文件下载路径
DownLoad=$download;
Rpmsource=$rpmsource;

#创建下载路径文件夹
if [ -d "${DownLoad}" ]; then
 while :;do
    delete=""
    read -p "检测到文件夹${DownLoad}已存在!是否重新创建文件夹:[y/n]" delete
    if [ "${delete}" = "y" ]; then
        command=`rm -rf ${DownLoad}`;
	break;
    else
	if [ "${delete}" = "n" ];then
	    echo "将使用已有的文件夹${DownLoad}存放下载文件";
	    break;
	else
	    echo "指令错误!";
	fi
    fi
 done
fi
mkdir -p ${DownLoad};
if [ $? -ne 0 ]; then
 echo "创建文件夹${DownLoad}失败";
 exit 1;
else
 echo "创建文件夹${DownLoad}成功";
fi

#下载mysql资源包
echo "正在下载mysql资源包...";
wget -P ${DownLoad} https://dev.mysql.com/get/${Rpmsource};
if [ $? -ne 0 ]; then
    echo "下载失败。正在尝试自动安装wget...";
    #安装wget
    yum -y install wget;
    if [ $? -ne 0 ]; then
        echo "安装失败.请尝试手动安装 执行:yum -y install wget";
	exit 1;#非正常结束脚本
    else
        echo "安装wget成功。正在进行下一步操作...";
	echo "正在下载mysql资源包...";
	wget -P ${DownLoad}  https://dev.mysql.com/get/${Rpmsource};
	if [ $? -eq 0 ]; then
	 echo "下载mysql资源包成功";
	else
	 echo "下载mysql资源包失败";
	 exit 1;
	fi
    fi
else
    echo "下载mysql资源包成功";
fi
echo "正在在线安装mysql安装源...";
yum -y localinstall ${DownLoad}/${Rpmsource};
if [ $? -ne 0 ]; then
    echo "安装mysql安装源失败!";
    exit 1;
else
    echo "安装源安装成功";
    #在线安装mysql
    echo "正在在线安装MySQL。。。";
    yum -y install mysql-community-server;
    if [ $? -eq 0 ]; then
     echo "在线安装MySQL完成";
    else
     echo "在线安装MySQL失败";
     exit 1;
    fi
fi

echo "正在启动mysql...";
systemctl start mysqld;
if [ $? -eq 0 ]; then
	echo "启动成功!正在设置开机自启。。。";
	systemctl enable mysqld;
	if [ $? -eq 0 ];then
		systemctl daemon-reload;
		if [ $? -eq 0 ]; then
			echo "设置成功!";
			echo "更改数据库密码和远程连接密码...";
			reset_mysql_root_password;#更改数据库密码和远程连接密码
			if [ $? -eq 0 ]; then
				echo "更改密码成功。";
				echo "正在开放3306端口。。。";
				firewall-cmd --zone=public --add-port=3306/tcp --permanent;
				if [ $? -eq 0 ]; then
					firewall-cmd --reload;
					if [ $? -eq 0 ]; then
						echo "开放成功!";
						exit 0;
					fi
				fi
			fi
		fi
	fi
fi
#如果没从if判断里面结束则运行不完全
exit 1;
}

uninstall(){
#检测是否安装了mysql
service mysqld start
if [ $? -ne 0 ]; then
        echo "未安装mysql";
	echo "检测到系统未安装mysql!无需卸载!";
	exit 1;
else
        echo "已安装mysql";
fi

#卸载mysql
echo "+-------------------------------------------------------------------+"
echo "|                                                                   |"
echo "|                            卸载 MySQL                             |"
echo "|                                                                   |"
echo "+-------------------------------------------------------------------+"

#yum卸载mysql
yum remove mysql -y
#yum卸载相关依赖
yum remove mysql57-community-release-el7-11.noarch -y
yum remove mysql-community-libs-5.7.34-1.el7.x86_64 -y
yum remove mysql-community-common-5.7.34-1.el7.x86_64 -y
#删除mysql相关文件夹
rm -rf /var/lib/mysql /usr/share/mysql
}


echo "-------------------------一键安装/卸载/修改密码------------------------"
echo "请选择:(输入序号)"
echo "1.安装"
echo "2.卸载"
echo "3.修改密码"
echo "----------------------------------------------------------------------"

while :; do
	read ch
	case $ch in
	        1)
	                install;
	                break;
	                ;;
	        2)
	                uninstall;
	                break;
	                ;;
	        3)
	               	reset_mysql_root_password;
	               	break;
	                ;;
	        *)
					echo "指令错误!"
					;;
	esac
done

使用方法

  1. 使用管理员账户在任意目录下创建文件onekeyMysql.sh和configuration.sh两个文件。(推荐在/root目录下新建一个文件夹)

    #切换到root目录
    cd /root
    #创建文件夹onekeyMysql
    mkdir onekeyMysql
    #创建文件onekeyMysql.sh和configuration.sh
    touch onekeyMysql.sh configuration.sh
    
  2. 使用vim编辑文件,并将脚本复制进去

  3. 给文件添加可执行权限

    #添加可执行权限
    chmod +x ./onekeyMysql.sh ./configuration.sh
    
  4. 执行程序

    ./onekeyMysql.sh
    

注意事项

  1. 需要root权限

  2. 执行脚本前确保系统中已卸载所有旧版本的mysql,否则可能导致安装失败!

  3. 执行安装过程中下载文件耗时可能会久一点。若感觉下载过慢可尝试CTRL+C中断执行 再次执行

  4. 待脚本执行完下载安装mysql后,后续过程中会让你输入mysql root用户的密码和远程连接数据库的密码

安装失败的可能原因

  1. rpm源失效,需要前往https://dev.mysql.com/downloads/mysql获取有效rpm源链接,并在configuration.sh配置脚本中替换

  2. 如果在windows系统中创建以上两个shell脚本,并通过xftp等方式上传到linux系统。可能会报错:-bash: ./onekeyMysql.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录。这是由于脚本文件在保存时使用了DOS文件格式造成的,可以用vim打开文件,然后执行下列操作:

    :set ff=unix
    :wq
    

参阅:

关于CentOS7一键安装mysql5.7演示_lingdou的博客-CSDN博客

linux卸载mysql(完全卸载)_QQ10166005的博客-CSDN博客_linux卸载mysql

Linux中脚本运行错误(坏的解释器:没有那个文件或目录) - 一个保温杯 - 博客园 (cnblogs.com)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值