一、背景
1.centos7
2.MySQL5.7.26
3.在根目录上创建tools目录,将MySQL的软件和脚本放至tools目录。
4.最好加上环境变量
二、shell脚本代码
#!/usr/bin/bash
#Author:xuan
#Function:MySQL搭建
#Version:V2.0
#Update:2020-11-14
base=/application/mysql
enc(){
#检查是否是root用户登录
if [ $LOGNAME != root ];then
echo "Please use the root account operation."
exit 1
fi
yum install tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs -y &>/dev/null
yum install psmisc net-tools bash-completion vim-enhanced -y &>/dev/null
yum install -y libaio-devel &>/dev/null
#检查防火墙是否关闭
echo "防火墙检查"
systemctl stop firewalld.service
systemctl disable firewalld.service
echo "防火墙已关闭"
#检查selinux
echo "检查selinux"
setenforce 0
sed -ri 's/^SEL.*$/SELINUX=disable/g' /etc/selinux/config
echo "selinux已关闭"
#检查是否有mariadb,有就卸载
echo “mariadb 检查”
um=`rpm -qa|grep mariadb`
if [ $? = 0 ] ;then
yum -y remove $um &>/dev/null
echo "mariadb 移除成功!"
else
echo "mariadb不存在!"
fi
#创建文件目录、授权,并且将文件解压进目录下
if [ ! -d $base ];then
mkdir -p $base
else
rm -rf $base/*
fi
mysql=`ls -l /tools |grep 'tar'|awk '{print $NF}'`
tar xf /tools/$mysql
my=`ls -l /tools |grep '5.7'|awk '{print $NF}'|grep -v 'tar'`
mv /tools/$my/* $base/
rm -rf /tools/$my
#创建用户
egrep "^mysql" /etc/passwd >& /dev/null
if [ $? -ne 0 ];then
useradd -s /sbin/nologin mysql
fi
#授权
chown -R mysql.mysql $base
}
echo "MySQL5.7安装程序"
read -p "是否检查环境,默认检查(Y/N): " examine
if [ ! $examine == "N" ];then
enc
fi
echo "开始安装MySQL........"
read -p "请输入端口号:" port
read -p "请输入sever_id:" server_id
echo "正在安装安装MySQL,请稍后......"
data=/data/mysql/$port
if [ -d $data ];then
rm -rf $data
mkdir -p $data
echo "创建文件"
else
mkdir -p $data
fi
#授权
chown -R mysql.mysql /data/mysql
#初始化
/application/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=$base --datadir=$data &>/dev/null
#初始化配置文件
cat >> $data/my.cnf <<EOF
[mysqld]
user=mysql
basedir=$base
datadir=$data
server_id=$server_id
log-error=$data/log.err
port=$port
socket=/tmp/mysql$port.sock
[mysql]
socket=/tmp/mysql$port.sock
port=3306
EOF
#systemctl管理mysql
syst=/etc/systemd/system/mysqld$port.service
if [ -f "$syst" ];then
rm -rf $syst
fi
cat >> $syst <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=$base/bin/mysqld --defaults-file=$data/my.cnf
LimitNOFILE = 5000
EOF
systemctl daemon-reload
systemctl start mysqld$port
if [ $? = 0 ] ;then
echo "mysql5.7 搭建成功!"
else
echo "搭建有问题"
fi