Centos7部署mysql离线脚本
提前下载好Centos7版本的mysql-xxx.tar安装包
官网下载地址
https://dev.mysql.com/downloads/mysql/5.7.html#downloads
1、下载好后修改好脚本中变量mysql_name的值,值为下载的mysql安装包名字。
2、由于有密码安全策略过渡密码必须8位以上。
3、登陆密码没有限制但不能和过渡密码相同,脚本更改了密码安全策略等级为LOW,长度大于4,这些属性可以在脚本中自行更改。
set global validate_password_policy=LOW;
set global validate_password_policy=0;
set global validate_password_length=4;
#/bin/bash
#需要完全卸载干净mysql后才能执行
#Mysql安装过渡密码
mysql_password='cly@2020'
#Mysql登陆密码为new_password
new_password='ILoveF@2020'
#安装rzsz
yum -y install lrzsz
#2种写法`和$()
p=`rpm -qa | grep -i mysql`
q=$(find / -name mysql)
m='0'
#mysql安装包名字
mysql_name='mysql-5.7.31-1.el7.x86_64.rpm-bundle.tar'
#检查mysql是否卸载干净
while (true)
do
if [ "${p}" ];then
echo "mysql软件包卸载不干净!"
echo "正在清理mysql残余软件包"
echo "====================="
m='1'
#mysql服务停止
echo "停止mysql服务"
systemctl stop mysqld.service
yum -y remove $(rpm -qa | grep -i mysql)
p=`rpm -qa | grep -i mysql`
echo "${p}"
fi
if [ !"${p}" ];then
break
fi
done
while (true)
do
if [ "${q}" ];then
echo "mysql文件夹卸载不干净!"
echo "正在清理mysql残余文件夹"
echo "====================="
m='1'
rm -rf $(find / -name "mysql")
q=$(find / -name mysql)
echo "${q}"
fi
if [ !"${q}" ];then
break
fi
done
if [ "${m}" -ne 0 ];then
rm –rf /usr/my.cnf
rm -rf /root/.mysql_sercret
chkconfig --del mysqld
echo "mysql卸载干净!"
echo "====================="
fi
#安装mysql5.7
echo "开始安装mysql"
cd /root/
mkdir software
cd software
echo "请上传${mysql_name}"
rz
while (true)
do
if [ -e ${mysql_name} ];then
mv ${mysql_name} /root/software/
break
else
echo '传输的压缩包错误!'
rm -rf *
echo "请重新传输${mysql_name}压缩包"
rz
fi
done
cd /root/software/
tar -xvf ${mysql_name}
#tar ${mysql_name}
#卸载冲突包
yum -y remove mariadb-libs-1*
#安装 MySQL-libs RHEL兼容包
rpm -ivh mysql-community-common-5.7.31-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-5.7.31-1.el7.x86_64.rpm --force --nodeps
#安装 MySQL-client MySQL客户端程序
rpm -ivh mysql-community-client-5.7.31-1.el7.x86_64.rpm --force --nodeps
#安装perl
yum -y install perl
#避免net-tools命令异常
yum -y install -y net-tools
#安装 MySQL-server MySQL服务端程序
rpm -ivh mysql-community-server-5.7.31-1.el7.x86_64.rpm --force --nodeps
echo "安装完成!"
echo "============================="
echo “启动mysql”
systemctl start mysqld
echo "设置mysql开机启动"
systemctl enable mysqld
systemctl daemon-reload
#配置mysql
#跳过密码登陆
echo "lower_case_table_names=1">>/etc/my.cnf
echo "skip-grant-tables" >>/etc/my.cnf
#重启mysql
systemctl restart mysqld.service
#登陆mysql
echo "请按一下回车键!"
mysql -u root -p <<EOF
update mysql.user set authentication_string=password('${mysql_password}') where user='root';
flush privileges;
exit
EOF
#删除密码登陆
sed -i "s#skip-grant-tables##g" /etc/my.cnf
#重启mysql
systemctl restart mysqld.service
#登陆mysql带新密码
mysql --connect-expired-password -uroot -p${mysql_password} -e "ALTER USER USER() IDENTIFIED BY '${new_password}';set global validate_password_policy=LOW;set global validate_password_policy=0;set global validate_password_length=4;ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;flush privileges;"
#赋予远程连接权限
mysql -u root -p${new_password} <<EOF
grant all privileges on *.* to 'root' @'%' identified by '${new_password}' with grant option;
flush privileges;
exit
EOF
echo "mysql配置完毕!"
echo "==============="
echo "==============="
echo "==============="
echo "==============="
#关闭防火墙
echo "关闭防火墙"
systemctl stop firewalld.service
#禁止firewall开机启动
echo "禁止firewall开机启动"
systemctl disable firewalld.service
echo "mysql安装完毕!"
原创脚本,转发请声明,若有错误之处,请多多指出,小弟一定修改。