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

部署脚本

  • 需要在脚本同级目录下新建Database文件夹,并添加mysql_new_password.txt文件(内容为设置的数据库密码)
  • 库放入Database文件夹下
#!/bin/bash

#安装mysql
InstallMysql()
{
    
    
	mariadb=`rpm -qa | grep mariadb` #执行指令用反引号
	if [ $mariadb ]; then
		rpm -e $mariadb --nodeps
	fi
	yum -y install wget
	yum -y install libaio
	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
	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*"`
	rpm -ivh $common
	rpm -ivh $libs
	rpm -ivh $client
	rpm -ivh $server --force --nodeps
	mysqld --initialize
	chown mysql:mysql /var/lib/mysql -R
	systemctl start mysqld.service
	systemctl enable mysqld
	cd ../
}

#安装Iptables
InstallIptables()
{
    
    
	#关闭firewalld防火墙
	systemctl stop firewalld.service
	systemctl disable firewalld.service
	systemctl mask firewalld.service
	#安装iptables
	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

	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=`cat ./Database/mysql_new_password.txt`
	#连接数据库并修改密码
	mysql -uroot -p$obtain_passwd --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$new_passwd';"
	#设置远程连接
	mysql -uroot -p$new_passwd --connect-expired-password -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 -uroot -p$new_passwd --connect-expired-password -e "create database $db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
	mysql -uroot -p$new_passwd $db  < ./Database/test.sql
}

# ping百度3次,检查网络连接是否正常
ping -c3 www.baidu.com
#shell脚本中$?是指上一次命令执行的成功或者失败的状态。如果成功就是0,失败为1
if [ $? -eq 0 ]; then
	echo"网络正常,开始安装"
	InstallMysql
	InstallIptables
	Configure_mysql
else
	echo "无法连接网络,请检查网络!"
	exit 1

fi

猜你喜欢

转载自blog.csdn.net/qq_45664055/article/details/127736274
今日推荐