CentOS7 通过shell脚本的离线安装MySQL5.7.40(rpm)

 说明:

        在项目的实施过程中,多次遇到安装MySQL的工作,尤其在内网环境下,无法使用在线yum源,只能使用源码或采用rpm离线安装的方式进行安装,在安装过程中会遇到各种各样的问题,小编特地就rpm离线安装方式进行了整理及验证,并通过shell脚本的方式实现一键安装。使用此脚本可以实现一键非交互式安装。

脚本使用方式如下:

  • 将安装包上传到服务器指定目录,如/opt/software

  • 解压软件包

tar -xvf centos7_mysql-5.7.40.tar
  • 进入安装目录

cd centos7_mysql-5.7.40
  • 目录内容 

  • 阅读README.txt

******************************************************************
* Author :wenhua.dong                                           *
* E-mail : wenhua.dong@aliyun.com								 *
* 如有问题请联系作者。												 *
******************************************************************

脚本执行方式如下:
	1)sh install.sh "123456" 						--密码
	2)sh install.sh "123456" "9999"				--密码+端口
	3)sh install.sh "123456" "9999" "/data/mysql"	--密码+端口+数据路径
	4)sh install.sh                                --使用默认值 密码:123456 端口:33066 数据路径:/data/mysql (默认值可以通过手动修改install.sh脚本的值来指定)

默认值:
	#默认的端口
	DEFAULT_PORT="33066"
	#默认的数据目录
	DEFAULT_DATA_DIR="/data/mysql"
	#默认的数据密码
	DEFAULT_PASS="123456"
	#默认的密码长度
	PASS_LENGTH=6
  • 脚本内容:

#!/bin/bash
# by dongwenhua
# centos 7 rpm方式安装Mysql5.7.40 
# 注:
# 	 mysql-community-client		    客户端
# 	 mysql-community-devel			开发库
# 	 mysql-community-common			服务端和客户端的公共文件
# 	 mysql-community-embedded		嵌入式
# 	 mysql-community-serve			服务端
# 	 mysql-community-test			测试组件
# 	 mysql-community-libs			共享库
# 	 mysql-community-libs-compat	MySQL之前版本的共享兼容库

# 	手动卸载重新安装:
#		systemctl stop mysqld
#		rpm -e mysql-community-server
#		rpm -e mysql-community-client
#		rpm -e mysql-community-devel
#		rpm -e mysql-community-libs-compat
#		rpm -e mysql-community-libs
#		rpm -e mysql-community-common
#		rm -rf /etc/my.cnf.rpmsave
#		rm -rf /var/log/mysqld.log
#		rm -rf /data/mysql    #数据目录为自己指定的目录,如未指定,默认为/data/mysql

#默认的端口
DEFAULT_PORT="33066"
#默认的数据目录
DEFAULT_DATA_DIR="/data/mysql"
#默认的数据密码
DEFAULT_PASS="123456"
#默认的密码长度
PASS_LENGTH=6

# 输出脚本用法
echo -e "\033[34mUsage: sh $0 {|password | password port| password port data_dir}\033[0m"
echo -e "\033[34mEg: \n      1、sh $0\n      2、sh $0 "123456"\n      3、sh $0 \"123456\" \"3306\"\n      4、sh $0 \"123456\" \"3306\" \"/data/mysql\"\n\033[0m"




# 判断当前服务器是否有正在运行的MySQL
MYSQL_RUNNING_NUM=`ps -ef |grep mysqld|grep -v grep|awk '{print $2}'|wc -l`
if [[ ${MYSQL_RUNNING_NUM} -gt 0 ]]; then
	echo -e "\033[5;41;32m检测到有正在运行的MySQL,如需重新安装,请先停止原MySQL服务,并备份数据以免丢失!!! \033[1;m"
	for pid in `ps -ef |grep mysqld|grep -v grep|awk '{print $2}'`
	do
		echo -e "\033[31m正在运行的MySQL的pid为:${pid} \033[0m"
	done
	exit
fi
# 判断当前服务器是否有正在运行的mariadb
MYSQL_RUNNING_NUM=`ps -ef |grep mariadb|grep -v grep|awk '{print $2}'|wc -l`
if [[ ${MYSQL_RUNNING_NUM} -gt 0 ]]; then
	echo -e "\033[5;41;32m检测到有正在运行的mariadb,如需重新安装,请先停止原mariadb服务,并备份数据以免丢失!!! \033[1;m"
	for pid in `ps -ef |grep mariadb|grep -v grep|awk '{print $2}'`
	do
		echo -e "\033[31m正在运行的mariadb的pid为:${pid} \033[0m"
	done
	exit
fi

# MySQL root 密码
if [[ ! -z $1 ]]; then
	MY_PASS=$1
	# echo $MY_PASS
else
	MY_PASS=${DEFAULT_PASS}
fi
# MySQL root 端口号
if [[ ! -z $2 ]]; then
	MY_PORT=$2
	# echo $MY_PORT
else
	MY_PORT=${DEFAULT_PORT}
fi

# MySQL 数据存放目录
if [[ ! -z $3 ]]; then
	[[ ! -f $3 ]] && {mkdir -p $3; MY_DIR=$3;} || { echo -e "\033[31m 目录 $3 已存在,请更换目录 \033[0m";exit; }
else
	[[ ! -f "${DEFAULT_DATA_DIR}" ]] && { mkdir -p ${DEFAULT_DATA_DIR}; MY_DIR="${DEFAULT_DATA_DIR}"; } ||  { echo -e "\033[31m 目录 ${DEFAULT_DATA_DIR} 已存在,请更换目录 \033[0m"; exit; }
fi


# 1、关闭selinux 防火墙
echo -e "\033[32m 关闭防火墙 \033[0m"
systemctl stop firewalld && systemctl disable firewalld

echo -e "\033[32m 关闭selinux \033[0m"
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 2、卸载centos7自带maridb
rpm -qa |grep mariadb-libs &>/dev/null &&  [[ $? -eq 0 ]] && { echo -e "\033[32m 卸载mariadb \033[0m" ;yum remove mariadb* -y; }

# 3、卸载centos7已安装的MySql
for i in `rpm -qa |grep -i mysql`
do
	echo -e "\033[32m 开始卸载${i} \033[0m"
	rpm -e --nodeps $i
done

# 4、删除MySQL遗留文件
[[ -d /var/lib/mysql ]] && { echo -e "\033[32m 删除目录【/var/lib/mysql】 \033[0m"; rm -rf /var/lib/mysql; }
[[ -d ${MY_DIR} ]] && { echo -e "\033[32m 删除目录【${MY_DIR}】 \033[0m"; rm -rf ${MY_DIR}; }
[[ -f /etc/my.cnf ]] && { echo -e "\033[32m 删除文件【/etc/my.cnf】 \033[0m"; rm -rf /etc/my.cnf; }
[[ -f /etc/my.cnf.rpmsave ]] && { echo -e "\033[32m 删除文件【/etc/my.cnf.rpmsave】 \033[0m"; rm -rf /etc/my.cnf.rpmsave; }
[[ -f /var/log/mysqld.log ]] && { echo -e "\033[32m 删除文件【/var/log/mysqld.log】 \033[0m"; rm -rf /var/log/mysqld.log; }

# 5、安装MySql
CURRENT_DIR=$(cd $(dirname $0); pwd)
cd ${CURRENT_DIR}
rpm -qa |grep libaio
if [[ $? -ne 0 ]]; then
	echo -e "\033[32m 安装MySQL5.7.40 依赖软件包【libaio】 \033[0m"
	rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm
fi
echo -e "\033[32m 安装MySQL5.7.40 软件包 \033[0m"
rpm -ivh mysql-community-common-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.40-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.40-1.el7.x86_64.rpm --force --nodeps

# 6、拷贝配置文件
echo -e "\033[32m 拷贝MySQL模板配置文件到/etc/my.cnf \033[0m"
cp -rf conf/my.cnf.template /etc/my.cnf
sed  -i "s#^datadir.*#datadir=${MY_DIR}#g" /etc/my.cnf
sed  -i "s#^port.*#port=${MY_PORT}#g" /etc/my.cnf

# 7、启动服务
echo -e "\033[32m 启动MySQL服务 \033[0m"
systemctl start mysqld && systemctl enable mysqld

# 8、修改密码
LOG_PASS=`grep 'temporary password' /var/log/mysqld.log|awk -F"root@localhost:" '{print $NF}'`
OLD_PASS=`echo ${LOG_PASS}`
mysql -uroot -P${MY_PORT} -p${OLD_PASS} --connect-expired-password -e "set global validate_password_policy=LOW;set global validate_password_length=${PASS_LENGTH};alter user 'root'@'localhost' identified by \"${MY_PASS}\";flush privileges;"

# 9、安装完成
mysql -uroot -P${MY_PORT} -p${MY_PASS}  -e "show databases;"
if [[ $? -eq 0 ]]; then
	echo -e "\033[32m MySQL安装完成,数据目录:${MY_DIR}请使用: mysql -uroot -P${MY_PORT} -p${MY_PASS} 命令进行连接\033[0m"
else
	echo -e "\033[5;41;32m MySql安装失败,请排查错误信息。重新安装请参考脚本15行卸载后,重新执行脚本 \033[1;m"
fi

CentOS 快速安装MySQL8.0资源包

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

abel_dwh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值