Linux系统_shell脚本自动安装数据库并修改密码和导入数据库

部署脚本

#!/bin/bash

#安装mysql服务端
InstallMysql()
{
	#查询是否已经安装Mariadb,如果已经安装,则执行单独卸载有关软件包
	mariadb=`rpm -qa | grep mariadb` #执行指令用反引号
	if [ $mariadb ]; then
		rpm -e $mariadb --nodeps
	fi
	#安装wget工具和所需的库文件,以确保 MySQL 能够正常运行
	yum -y install wget
	yum -y install libaio
	#创建文件夹并下载 MySQL 8 的 RPM 包文件
	mkdir -p ./mysql
	wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.17-1.el7.x86_64.rpm-bundle.tar -O ./mysql/mysql.tar
	#进入目录,解压文件
	cd mysql
	tar -xvf mysql.tar
	#查询压缩包中相应的RPM软件包文件名
	common=`find . -name "mysql-community-common*"`
	libs=`find . -name "mysql-community-libs-8*"`
	client=`find . -name "mysql-community-client*"`
	server=`find . -name "mysql-community-server*"`
	#以顺序安装MySQL相应的共享库、客户端、服务组件,其中--force --nodeps命令行选项可确保成功安装MySQL
	rpm -ivh $common
	rpm -ivh $libs
	rpm -ivh $client
	rpm -ivh $server --force --nodeps
	#初始化 MySQL 数据库
	mysqld --initialize
	#修改MySQL数据库文件夹权限为mysql用户
	chown mysql:mysql /var/lib/mysql -R
	#启动 MySQL 服务
	systemctl start mysqld.service
	#将 MySQL 服务设置为开机启动状态
	systemctl enable mysqld
	#返回上级目录,结束安装过程
	cd ../
}

#安装Iptables,并配置防火墙规则
InstallIptables()
{
	#停止、禁用并屏蔽 firewalld 服务
	systemctl stop firewalld.service
	systemctl disable firewalld.service
	systemctl mask firewalld.service
	#安装 iptables-services 程序包
	yum -y install iptables-services
	systemctl enable iptables
	systemctl start iptables
	#删除阻塞预设端口的规则
	iptables="/etc/sysconfig/iptables"
	sed -i '/COMMIT/d' "$iptables"
	sed -i '/--dport 80 -j/d' "$iptables"
	sed -i '/--dport 3306/d' "$iptables"
	sed -i '/--dport 443/d' "$iptables"
	sed -i '/INPUT -j REJECT/d' "$iptables"
	sed -i '/FORWARD -j REJECT/d' "$iptables"
	#增加需要放行的端口规则
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT">>$iptables
	echo "-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT">>$iptables
	echo "-A INPUT -j REJECT --reject-with icmp-host-prohibited">>$iptables
	echo "-A FORWARD -j REJECT --reject-with icmp-host-prohibited">>$iptables
	echo "COMMIT">>$iptables
	#重新启动 iptables 服务,并将其注册到系统初始化服务列表中
	systemctl restart iptables.service
	systemctl enable iptables.service
}

#配置 MySQL 数据库,创建必要的数据表等
Configure_mysql()
{
	#库名
	db="test_1"
	#获取默认密码
	initial_passwd=`cat /var/log/mysqld.log | grep password` #执行指令用反引号
	obtain_passwd=${initial_passwd#*localhost: } #冒号后面有个空格,需要注意
	#获取新密码
	new_passwd="123456"
	#把新密码写入临时的环境变量中,变量的名称不可修改,否则无法连接数据库
	export MYSQL_PWD=$new_passwd
	#1.连接数据库并修改密码
	mysql -uroot -p$obtain_passwd --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$new_passwd';"
	#1.在MySQL中创建一个名为root,允许从任何远程主机连接到该实例的用户,并将其密码设置为$new_passwd
	#2.授予MySQL中的root用户在任何数据库中执行所有操作的权限,包括创建和删除数据库、表、视图等,并赋予与该权限相关的GRANT OPTION选项
	#3.在MySQL中修改root用户的密码,并将其密码过期策略设置为“永不过期”
	#4.刷新MySQL权限缓存,以使最新的更改生效
	mysql -u root -e "create user 'root'@'%' identified with mysql_native_password by '$new_passwd';grant all privileges on *.* to 'root'@'%' with grant option;ALTER USER 'root'@'localhost' IDENTIFIED BY '$new_passwd' PASSWORD EXPIRE NEVER;flush privileges;"
	#新建数据库并导入库
	mysql -u root -e "create database $db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
	mysql -u root $db  < $db_file_path
}


#判断网络状态
if ! ping -c3 www.baidu.com &>/dev/null; then
	echo "无法连接互联网,请检查网络!"
	exit 1
fi

#判断文件是否存在
db_file_path="./test.sql"
if [ -e "$db_file_path" ]
then
	echo "数据库文件存在,开始安装..."
	InstallMysql
	InstallIptables
	Configure_mysql
else
    echo "数据库文件不存在"
    exit 1
fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值