MySQL安装脚本

#!/bin/bash
###1、检测mysql安装环境
echo -e "\033[44;37;1m"
echo -e "========================================================================"     # 蓝色字
echo -e "************************************************************************"
echo -e "********                                                        ********"
echo -e "*****                   mysql-5.6.48数据库安装部署                 *****"
echo -e "********                                                        ********"
echo -e "************************************************************************"
echo -e "************************************************************************\033[0m"

###预定义mysql安装路径
mysql_install_path='/home/mysql'
var_mysql_name=mysql-5.6.48-linux-glibc2.12-x86_64.tar.gz
var_mysql_old_name=mysql-5.6.48-linux-glibc2.12-x86_64
var_mysql_new_name=mysql-5.6.33
var_flag="2"
source_path=$(dirname $0)
cd $source_path

###检查当前用户是否是root用户
if [ $(id -u) != "0" ];
 then
echo -e ""
echo -e "\033[31m *****请切换到root用户下,重新执行自动安装脚本!!***** \033[0m" 
echo -e ""
exit 1
fi

echo -e ""
echo -e "\033[34m *****开始安装mysql数据库,请耐心等待...***** \033[0m" 
echo -e ""

var_mysql_stat=`netstat -tnlp|grep mysqld`
if [ "$var_mysql_stat" != "" ];
then
	echo -e ""
	echo -e "\033[31m *****警告:此服务器已运行mysql数据库,mysql自动安装部署程序退出!!!***** \033[0m" 
	echo -e ""
	exit 0
fi

if [ -d $mysql_install_path ];
then
	echo -e ""
	echo -e "\033[31m *****警告:此服务器安装过mysql,mysql自动安装部署程序退出!!!***** \033[0m" 
	echo -e ""
	exit 0
	else
	  sleep 2s
fi

###2、检测系统是否预装mariadb安装包,默认卸载
var_mariadb_stat=`rpm -qa|grep -i mariadb`
if [ "$var_mariadb_stat" != "" ];
then
	rpm -e --nodeps `rpm -qa|grep -i mariadb` 1>/dev/null 2>&1
fi

###删除用户及相关文件
userdel	-r mysql 1>/dev/null 2>&1
groupdel mysql 1>/dev/null 2>&1

###操作系统环境配置
echo -e ""
echo -e "\033[34m *****创建系统用户mysql(用于mysql数据库的管理),并设置密码为A_isino#888***** \033[0m" 
echo -e ""
groupadd  mysql 1>/dev/null 2>&1
useradd  -s /sbin/nologin  -d  $mysql_install_path  -m  -g mysql  mysql
#chown -R mysql:mysql $mysql_install_path
echo mysql:A_isino#888 | chpasswd
if [ "$?" = 0 ] ;
then
	echo -e "\033[32m *****ok!!!!!***** \033[0m"
	sleep 2s
else
	echo -e "\033[31m *****创建mysql用户操作失败,异常退出!***** \033[0m" 
	exit 1
fi

###设置系统内核参数文件/etc/security/limits.conf
echo -e ""
echo -e "\033[34m *****配置系统内核参数文件***** \033[0m" 
echo -e ""

mysql_limits_info=`cat /etc/security/limits.conf |grep mysql`
if [ "${mysql_limits_info}" = "" ];
then 
	echo "mysql	soft	nproc		2047" >> /etc/security/limits.conf
	echo "mysql	hard	nproc		16384" >> /etc/security/limits.conf
	echo "mysql	soft	nofile		1024" >> /etc/security/limits.conf
	echo "mysql	hard	nofile		65536" >> /etc/security/limits.conf
fi

pam_limits_info=`cat /etc/pam.d/login |grep pam_limits.so`
if [ "${pam_limits_info}" = "" ];
then 
	echo "session	required		pam_limits.so" >> /etc/pam.d/login
fi

if [ "$?" = 0 ] ;
then
	echo -e "\033[32m *****ok!!!!!***** \033[0m"
	sleep 2s
else
	echo -e "\033[31m *****设置系统内核参数文件/etc/security/limits.conf失败,请后续手工修改!***** \033[0m" 
fi
# ###拷贝mysql.sh到 /home/mysql
# \cp -af mysql.sh $mysql_install_path

###解压mysql安装压缩包到指定目录 /home/mysql
echo -e ""
echo -e "\033[34m *****解压mysql安装压缩包到指定目录 $mysql_install_path ***** \033[0m" 
echo -e ""
if [ -f $var_mysql_name ];
then
	tar -zxf $var_mysql_name  -C $mysql_install_path  1>/dev/null 2>&1
	if [ "$?" = 0 ] ;
	then
		echo -e "\033[32m *****ok!!!!!***** \033[0m"
		sleep 2s
	else
		echo -e "\033[31m *****解压mysql安装压缩包失败,异常退出!***** \033[0m" 
		exit 1
	fi
else
	echo -e "\033[31m 当前目录$var_mysql_name文件不存在!程序退出! \033[0m" 
	exit 1
fi

###重命名数据库跟目录
echo -e ""
echo -e "\033[34m *****重命名数据库跟目录为 $mysql_install_path/$var_mysql_new_name***** \033[0m" 
echo -e ""
mv  $mysql_install_path/$var_mysql_old_name  $mysql_install_path/$var_mysql_new_name 1>/dev/null 2>&1
if [ "$?" = 0 ] ;
then
	echo -e "\033[32m *****ok!!!!!***** \033[0m"
	sleep 2s
else
	echo -e "\033[31m *****重命名数据库跟目录失败,异常退出!***** \033[0m" 
	exit 1
fi
###创建tmp临时目录
mkdir -p $mysql_install_path/$var_mysql_new_name/tmp

###将mysql服务器配置文件拷贝到指定目录
\cp -rf my.cnf  $mysql_install_path/$var_mysql_new_name/my.cnf

###对mysql根目录进行权限配置
chown -R mysql:mysql $mysql_install_path

###配置mysql用户的环境变量
echo -e ""
echo -e "\033[34m *****配置mysql用户的环境变量***** \033[0m" 
echo -e ""
echo "export PATH=$mysql_install_path/$var_mysql_new_name/bin:$mysql_install_path/$var_mysql_new_name/scripts:\$PATH" >>  $mysql_install_path/.bash_profile
# echo "export PATH=$mysql_install_path/$var_mysql_new_name/bin:$mysql_install_path/$var_mysql_new_name/scripts:\$PATH" >>  /etc/profile
if [ "$?" = 0 ] ;
then
	echo -e "\033[32m *****ok!!!!!***** \033[0m"
	sleep 2s
else
	echo -e "\033[31m *****配置mysql用户的环境变量失败,异常退出!***** \033[0m" 
	exit 1
fi
source $mysql_install_path/.bash_profile
source /etc/profile
###初始化mysql
echo -e ""
echo -e "\033[34m *****初始化mysql实例,请耐心等待...***** \033[0m" 
echo -e "" 
# $mysql_install_path/$var_mysql_new_name/bin/mysqld  --initialize-insecure  --user=mysql  --basedir=$mysql_install_path/$var_mysql_new_name  --datadir=$mysql_install_path/$var_mysql_new_name/data
chmod +x $mysql_install_path/$var_mysql_new_name/scripts/mysql_install_db
$mysql_install_path/$var_mysql_new_name/scripts/mysql_install_db --user=mysql --basedir=$mysql_install_path/$var_mysql_new_name --datadir=$mysql_install_path/$var_mysql_new_name/data --defaults-file=$mysql_install_path/$var_mysql_new_name/my.cnf  > /dev/null 2>&1
if [ "$?" = 0 ];
then
	echo -e "\033[32m *****ok!!!!!***** \033[0m"
	sleep 3s
else
	echo -e "\033[31m *****初始化mysql实例失败,异常退出!***** \033[0m" 
	exit 1
fi


###修改mysqld_safe启动命令
sed -i 's#/usr/local/mysql#/home/mysql/mysql-5.6.33#g' $mysql_install_path/$var_mysql_new_name/bin/mysqld_safe

###修改mysql服务相关路径参数
sed -i 's#/usr/local/mysql#/home/mysql/mysql-5.6.33#g' $mysql_install_path/$var_mysql_new_name/support-files/mysql.server

###redhat6
###配置mysql服务为系统服务
\cp -af $mysql_install_path/$var_mysql_new_name/support-files/mysql.server    /etc/init.d/mysqld
###修改/etc/init.d/mysqld启动命令相关路径参数
sed -i 's#/usr/local/mysql#/home/mysql/mysql-5.6.33#g' /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on


# mkdir -p /var/run/mysqld/
# chown -R mysql:mysql /var/run/mysqld

###启动mysqld实例
echo -e ""
echo -e "\033[34m *****启动mysql实例,请耐心等待...***** \033[0m" 
echo -e "" 
nohup $mysql_install_path/$var_mysql_new_name/bin/mysqld_safe --defaults-file=$mysql_install_path/$var_mysql_new_name/my.cnf --user=mysql > /dev/null 2>&1 &
if [ "$?" = 0 ] ;
then
	while [ 1 = 1 ]
	do
		mysql_stat=`netstat -tnlp|grep 3306`
		if [ "$mysql_stat" = "" ];
		then
			sleep 3s
			continue
		else
			break
		fi
	done	
	echo -e "\033[32m *****ok!!!!!***** \033[0m"
	sleep 3s
else
	echo -e "\033[31m *****启动mysql实例失败,异常退出!***** \033[0m" 
	exit 1
fi

###修改数据库root账户密码并授远程登陆权限
echo -e ""
echo -e "\033[34m *****设置数据库root账户密码为 A_isino#888,并授权远程登陆***** \033[0m" 
echo -e "" 
$mysql_install_path/$var_mysql_new_name/bin/mysqladmin -uroot -S"$mysql_install_path/$var_mysql_new_name/mysql.sock"  password  'A_isino#888'  1>/dev/null 2>&1
if [ "$?" = 0 ] ;
then
	echo -e "\033[32m *****设置数据库root账户密码操作:ok!!!!!***** \033[0m" 
	sleep 2s
else
	echo -e "\033[31m *****设置数据库root账户密码操作失败,异常退出!***** \033[0m" 
	exit 1
fi
$mysql_install_path/$var_mysql_new_name/bin/mysql -uroot -p'A_isino#888' -S"$mysql_install_path/$var_mysql_new_name/mysql.sock"  -e "grant all privileges on *.* to root@'%' identified by 'A_isino#888' with grant option; flush privileges;" 1>/dev/null 2>&1

$mysql_install_path/$var_mysql_new_name/bin/mysql -uroot -p'A_isino#888' -S"$mysql_install_path/$var_mysql_new_name/mysql.sock"  -e "grant all privileges on *.* to root@'127.0.0.1' identified by 'A_isino#888' with grant option; flush privileges;" 1>/dev/null 2>&1

if [ "$?" = 0 ] ;
then
	echo -e "\033[32m *****授权数据库root账户远程登陆操作:ok!!!!!***** \033[0m"
	sleep 2s
else
	echo -e "\033[31m *****授权数据库root账户远程登陆失败,异常退出!***** \033[0m" 
	exit 1
fi

###删除数据库匿名用户
$mysql_install_path/$var_mysql_new_name/bin/mysql -uroot -p'A_isino#888' -S"$mysql_install_path/$var_mysql_new_name/mysql.sock" -e "delete from mysql.user where user=''; flush privileges;" 1>/dev/null 2>&1

echo -e ""

echo -e "\033[34m **********************mysql数据库安装配置完成!!********************** \033[0m"

###创建my.cnf软链接 by 0619
rm -f /etc/my.cnf 
ln -s /home/mysql/mysql-5.6.33/my.cnf /etc/
###增加mysql环境变量 by 0619
var_flag_mysqlpath=`cat /etc/profile|grep 'PATH=/home/mysql/mysql'|wc -l` 
if [ "$var_flag_mysqlpath" = "0" ];then
	echo -e "" >> /etc/profile
	echo -e "# 增加mysql环境变量" >> /etc/profile
	echo "export PATH=$mysql_install_path/$var_mysql_new_name/bin:$mysql_install_path/$var_mysql_new_name/scripts:\$PATH" >> /etc/profile
fi
sleep 2s
. /etc/profile

######设置防火墙规则,打开3306端口
echo -e ""
echo -e "\033[34m *****设置防火墙,开放3306端口***** \033[0m" 
echo -e "" 
firewalld_status=`systemctl status firewalld.service|grep 'Active'|awk '{print $2}'`
if [ "$firewalld_status" = 'active' ] ;
then
	firewall-cmd --add-port=3306/tcp --permanent 1>/dev/null 2>&1
	firewall-cmd --reload 1>/dev/null 2>&1
	if [ "$?" = 0 ] ;
	then
		echo -e "\033[32m *****ok!!!!!***** \033[0m" 
	else
		echo -e "\033[31m *****设置防火墙失败,异常退出!***** \033[0m" 
		exit 1
	fi
else
	echo -e ""
	echo -e "\033[31m *****本次设置防火墙策略失败,如果服务器后续需要开启防火墙,需要另行对防火墙进行设置开放mysql服务的3306端口!!!***** \033[0m" 
	echo -e "" 
fi

##################导入数据库初始脚本
netstat -tnlp|grep 3306  1>/dev/null 2>&1
if [ "$?" = "0" ];
then
	echo -e ""
	echo -e "\033[34m ############################################################# \033[0m"
	echo -e "\033[34m *****       导入数据库初始化sql脚本       ***** \033[0m" 
	echo -e ""
	fun_sql(){
		local db_name=${1}
		local sql_name=${2}
		local call=${3}
		if [ -f "${sql_name}" ];then
			if [ "${call}" != "no" ];then
				echo -e "\033[34m *****存在${db_name}库sql,开始执行导入****** \033[0m"
				echo -e ""
			fi
			$mysql_install_path/$var_mysql_new_name/bin/mysql -uroot -p'A_isino#888' -S"$mysql_install_path/$var_mysql_new_name/mysql.sock" < ${sql_name}  1>/dev/null 2>&1
			if [ "$?" == "0" ];then
				if [ "${call}" != "no" ];then
					echo -e "\033[32m *****${db_name}库sql脚本导入结果:ok!!!!!****** \033[0m"
					echo -e ""
					sleep 2s
				fi
			else
				echo -e ""
			fi
		else
			echo -e "\033[31m *****不存在${db_name}库sql,跳过导入****** \033[0m"
		fi
	
	}
	
	
	if [ -d "kpfw_web" ];then
		echo -e "\033[34m *****执行a9前置数据库导入!!!!!****** \033[0m"
		echo -e ""
		cd kpfw_web
		fun_sql kpfw_web kpfw_web.sql no
		fun_sql kpfw_web kpfw_web_data.sql  no
		fun_sql kpfw_web kpfw_spbm_update.sql 
	fi

	echo -e ""
	echo -e "\033[34m *****数据库导入操作完成!!***** \033[0m" 
	echo -e ""
else
	echo -e "\033[31m *****mysql数据库端口为3306的实例没有启动,无法导入初始化sql脚本***** \033[0m" 
fi

echo -e "\033[34m ********         mysql数据库安装和配置完成!!!  ******** \033[0m"


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值