shell脚本自动化部署mysql

一、shell脚本自动部署mysql


#!/bin/env bash

#注意:
#(1)把安装包放入/root/my下面,脚本也放入/root/my,脚本名称设置为setup.sh,脚本名别带上mysql字样,否则第一步的杀死进程会导致脚本终端
#(2)执行脚本方式为:bash -x /root/my/setup.sh &> /root/setup.sh
#(3)centos版本为CentOS Linux release 7.9.2009 (Core)


exedir=/root/my
log=/root/mysqlresult.log
exe=$exedir/`ls -l -crt *tar*| awk '{print $9 }'`


function kill()
{
ps -ef | grep mysql|awk -F" " '{print $2}'|xargs kill -9
}



#检查是否安装mariadb,如果安装执行删除
function mariadb()
{
	echo
	echo "------------------------"
	echo "1、检查是否安装mariadb"
	yum list installed | grep mariadb
	if [ $? -eq 0 ]
	then
	 	yum -y remove  mariadb*
	 	echo "已删除mariadb"
	else 
		echo "不存在mariadb"
	fi
	echo "------------------------"
        echo
}

function mysqlfile()
{
	echo
	echo "------------------------"
	echo "2、删除所有mysql目录"
	find / -name mysql
	if [ $? -eq 0 ]
	then
		find / -name mysql -exec rm -rf  {} \;
		echo "已删除含有mysql目录"
	fi
	echo "------------------------"
        echo
}


function mysqluser()
{
	echo
	echo "------------------------"
	echo "3、建立mysql用户和mysql用户组"
	id mysql
	if [ $? -eq 0 ]
	then 
		userdel -r mysql
		groupdel mysql
		groupadd mysql
		useradd -r -g mysql mysql
		echo "已删除mysql用户和用户组并重新建立组!"
		
	else
		groupadd mysql
		useradd -r -g mysql mysql
		echo "不存在mysql用户和用户组,重新建立完成!"
	fi
	echo "------------------------"
        echo
}


function jieya()
{	
	echo
	echo "------------------------"
	echo "4、解压安装包"
	cd $exedir
	tar xvf $exe
	anzhuagnbao=`ls -l -crt| awk '{print $9 }'|tail -1`
	mv $anzhuagnbao /usr/local/
	cd /usr/local/
	mv $anzhuagnbao mysql
	cd /usr/local/mysql
	mkdir /usr/local/mysql/data
	chown -R mysql:mysql /usr/local/mysql
	chmod -R 755 /usr/local/mysql
	cd /usr/local/mysql/bin
	yum -y install libaio-devel.x86_64
	yum -y install libaio.so.1
	yum -y install numactl
	yum -y install libstdc++.so.6
	yum -y install libnuma.so.1
	yum -y install libtinfo.so.5
	cd /usr/local/mysql/bin
	echo "------------------------"
        echo
}

function init()
{
	echo
	echo "------------------------"
        echo "5、初始化"
	cd /usr/local/mysql/bin/
	./mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data --basedir=/usr/local/mysql
	echo "------------------------"
        echo
}




function mycnf()
{
	echo
	echo "------------------------"
        echo "6、修改mysql配置文件"
	rm -rf /etc/my.cnf
	touch /etc/my.cnf
cat >> /etc/my.cnf <<EOF
[mysqld]
datadir=/usr/local/mysql/data
port=3306
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
symbolic-links=0
max_connections=600
innodb_file_per_table=1
log-error=/usr/local/mysql/data/error.log
EOF
	echo "------------------------"
        echo
}


function start()
{
	echo "------------------------"
        echo "7、启动数据库"
	/usr/local/mysql/support-files/mysql.server start
	echo "------------------------"
	echo

}


function link()
{
        echo "------------------------"
        echo "8-1、链接mysql命令"
	ln -s /usr/local/mysql/bin/mysql /usr/bin
	
	echo "8-2、链接mysql命令"
	echo "------------------------"
	ln -s /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
	ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
	service mysql restart
        echo
}


function passwd()
{
	pass1=`awk -F' ' '/password/{print $NF}' /usr/local/mysql/data/error.log`
	pass2=`awk -F' ' '/A temporary password/{print $NF}' /root/mysqlresult.log`
	if [ -z $pass1 ]
	then
	echo "数据库密码是:$pass2"
	else
	echo "数据库密码是:$pass1"
	fi
}


function login()
{
	echo "------------------------"
        echo "9、登录数据库修改密码"
	loginname=root
	mysqlpasswd=`awk -F: '/数据库密码是/{print $NF}' $log`

	mysql -hlocalhost  -P3306  -u$loginname -p$mysqlpasswd --connect-expired-password -e  "
	ALTER USER USER() IDENTIFIED BY '123456';
	flush privileges;
	use mysql;
	update user set user.Host='%' where user.User='root';
	flush privileges;
	alter user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
	flush privileges;
	exit;"

}




function check()
{
kill		#杀死进程
mariadb		#mariadb检测
mysqlfile	#mysql文件检测
mysqluser	#mysql用户检测
jieya		#安装包解压
init		#初始化并生成登录密码
mycnf		#my.cnf配置文件修改
start		#启动数据库
link		#连接mysql相关命令
passwd		#输出mysql密码
login		#登录数据库修改密码
}

check > $log 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值