#!/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"