一键安装卸载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
使用方法
-
使用管理员账户在任意目录下创建文件onekeyMysql.sh和configuration.sh两个文件。(推荐在/root目录下新建一个文件夹)
#切换到root目录 cd /root #创建文件夹onekeyMysql mkdir onekeyMysql #创建文件onekeyMysql.sh和configuration.sh touch onekeyMysql.sh configuration.sh
-
使用vim编辑文件,并将脚本复制进去
-
给文件添加可执行权限
#添加可执行权限 chmod +x ./onekeyMysql.sh ./configuration.sh
-
执行程序
./onekeyMysql.sh
注意事项
-
需要root权限
-
执行脚本前确保系统中已卸载所有旧版本的mysql,否则可能导致安装失败!
-
执行安装过程中下载文件耗时可能会久一点。若感觉下载过慢可尝试CTRL+C中断执行 再次执行
-
待脚本执行完下载安装mysql后,后续过程中会让你输入mysql root用户的密码和远程连接数据库的密码
安装失败的可能原因
-
rpm源失效,需要前往https://dev.mysql.com/downloads/mysql获取有效rpm源链接,并在configuration.sh配置脚本中替换
-
如果在windows系统中创建以上两个shell脚本,并通过xftp等方式上传到linux系统。可能会报错:-bash: ./onekeyMysql.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录。这是由于脚本文件在保存时使用了DOS文件格式造成的,可以用vim打开文件,然后执行下列操作:
:set ff=unix :wq
参阅:
关于CentOS7一键安装mysql5.7演示_lingdou的博客-CSDN博客