懒人shell脚本:5.7/8.0数据库自动安装

脚本使用场景

1.服务器新增mysql数据库

2.已存在mysql数据库,数据库已备份,升级或者重新部署数据库

前置条件

一台可以联网的centos7服务器

最低配置要求:

2G1核

操作步骤

复制代码到服务器上,代码在文末

保存为install_db.sh

chmod +x install_db.sh

运行过程

场景一:新增mysql服务

  • 运行 sh install_db.sh
  • 安全检测:无MySQL服务

        根据提示输入:

        大版本的版本号比如8.0

        root密码(要求符合密码复杂度),比如:0qaWS(SICnsj

        等待1-5分钟

        等待屏幕输出

        root@localhost密码是0qaWS(SICnsj

已添加开机自启

安装完成

场景二:重新部署或升级服务版本

  • 运行 sh install_db.sh
  • 安全检测:由于考虑到服务器的数据安全问题。当本地存在mysql时,脚本将停止运行,将输出红色闪烁字样提醒。

已安装MySQL
版本号为:mysql  Ver 8.0.33 for Linux on x86_64 (MySQL Community Server - GPL)
端口号为:33060
3306

  • 移除之前版本的数据库,参考命令rpm -e 包名。
  • 再次运行 sh install_db.sh
  • 安全检测:无MySQL服务
  • 根据提示输入:

大版本的版本号比如8.0

root密码(要求符合密码复杂度),比如:0qaWS(SICnsj

等待1-5分钟,期间将增加重设密码操作,密码为输入的密码

等待屏幕输出

root@localhost密码是0qaWS(SICnsj

已添加开机自启。

附录:脚本代码内容

#!/bin/bash
# 检查是否已安装MySQL
version=`mysql --version`
if [ $? == 0 ]; then
    # 如果已安装,输出版本号和端口
    port=$(netstat -anpt|grep mysqld|grep LISTEN|awk '{print $4}'|sed 's/.*://')
    echo -e "\033[31;05m已安装MySQL\n版本号为:${version}\n端口号为:${port}\033[0m"
exit
else
echo '无mysql服务,将进行部署服务'
# 定义变量
mysql_version=$1
password=$2

# 获取版本号
read -p "请输入需要安装的 MySQL 版本号(5.7/8.0):" mysql_version
if [[ "${mysql_version}" != "5.7" && "${mysql_version}" != "8.0" ]]; then
  echo "不支持的MySQL版本号!请重新运行脚本并输入5.7或8.0"
  exit 1
fi

# 获取密码,隐藏输入内容
read -s -p "请输入 MySQL的root 密码(密码符合大小写字母特殊字符复杂度):" password
echo ""
#清理旧版本遗留的安装包
rpm -qa | grep mysql-community | xargs rpm -e --nodeps
rpm -qa | grep Percona-Server | xargs rpm -e --nodeps
# 安装对应版本的 MySQL
if [[ $mysql_version == "5.7" ]]
then
    rpm -e --nodeps mysql80-community-release-el7-3.noarch
    yum install -y http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
    yum install -y mysql-community-server mysql-community-client
elif [[ $mysql_version == "8.0" ]]
then
    rpm -e --nodeps mysql57-community-release-el7-11.noarch
    rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
    yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    yum install -y mysql-community-server mysql-community-client
else
    echo "输入的版本号错误"
    exit 1
fi

# 获取my.cnf中log-error的值
log_error=$(grep -Po '(?<=log-error=)[^[:space:]]*' /etc/my.cnf)
# 读取临时密码
temp_pass=$(grep 'temporary password' $log_error | awk '{print $NF}'| tail -1)

# 启动Mysql
systemctl start mysqld

# 修改密码
if  [[ $mysql_version == "5.7" ]]; then
    # 修改Mysql密码
    mysql -uroot -p"$temp_pass" --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$password'; FLUSH PRIVILEGES;"
elif [[ $version == "8.0" ]]; then
    # 修改Mysql密码
    mysql -uroot -p"$temp_pass" -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$password'; FLUSH PRIVILEGES;"
fi
fi
# 验证Mysql
if mysql -uroot -p$password -e "SELECT 1" >/dev/null 2>&1; then
  echo "mysql 数据库可以正常查询"
else
    sed -i '/\[mysqld\]/a skip_grant_tables' /etc/my.cnf
    sed -i '/\[mysqld\]/a default_authentication_plugin=mysql_native_password' /etc/my.cnf
    systemctl restart mysqld
    mysql -e "update mysql.user set authentication_string='' where user='root' and host='localhost';"
    sed -i '/skip_grant_tables/d' /etc/my.cnf
    systemctl restart mysqld
    mysql -uroot -p --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$password'; FLUSH PRIVILEGES;"
fi
#fi
mysql -uroot -p$password -e "SELECT 1" >/dev/null 2>&1
echo -e "\033root@localhost密码是$password\033"
#开机自启
chkconfig mysqld on >/dev/null
echo '已添加开机自启'

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值