#!/bin/bash
仅支持centos
function hello
{
echo "1、自动化安装mysql5.7"
echo "2、自定义mysql5.7(支持多实例)"
echo "q、退出"
read -p "输入数字;" choice
case $choice in
1)
BASE_MYSQL=/opt
DATA_MYSQL=/data/mysql
PORT=3306
CONFIG_FILE=/etc/my.cfg
SERVER_ID=1
if [[ SERVER_ID -eq 1 ]];then
echo "PATH=$BASE_MYSQL/mysql5.7/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
fi
;;
2)
read -p "请输入程序解压的路径不带尾巴'/' :" BASE_MYSQL
read -p "数据库存储目录路径不带尾巴'/' :" DATA_MYSQL
read -p "请输入端口号:" PORT
read -p "配置文件路径,如/etc/my.cfg:" CONFIG_FILE
read -p "实例的服务id:" SERVER_ID
;;
q)
exit 0
;;
*)
echo "输入有误,请重新输入!"
esac
}
#创建mysql用户
function user
{
id mysql &> /dev/null
if [[ $? -eq 0 ]];then
echo "mysql用户已经创建!"
else
useradd -M -s /bin/false mysql
echo "mysql用户已经创建!"
fi
#需要的库
if [[ -f /etc/redhat-release ]];then
yum install -y libaio
else
apt install libaio* -y
fi
}
#二进制安装包下载及解包
function File_Judge
{
if [[ -f mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz ]] ;then
echo "已找到二进制安装文件!开始解包!"
else
wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
echo "下载完毕,开始解包!"
fi
}
#解压数据库到指定目录
function Unpack
{
tar xvf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz -C $BASE_MYSQL
oldname=`ls $BASE_MYSQL|grep my`
mv $BASE_MYSQL/$oldname $BASE_MYSQL/mysql5.7
chown mysql:mysql $BASE_MYSQL/mysql5.7 -R
}
#加载环境变量
#初始化数据库
function initialize_database
{
##更改文件夹所属用户
mkdir $DATA_MYSQL -p
chown mysql:mysql $DATA_MYSQL -R
$BASE_MYSQL/mysql5.7/bin/mysqld --initialize --user=mysql --basedir=$BASE_MYSQL/mysql5.7 --datadir=$DATA_MYSQL
}
#创建mysql所需配置文件
function make_configuration
{
if [[ SERVER_ID -eq 1 ]] ;then
FILE_NAME="mysqld"
else
FILE_NAME="mysqld$SERVER_ID"
fi
if [[ $SERVER_ID -eq 1 ]];then
SOCKET=/tmp/mysql.sock
else
SOCKET=/tmp/mysql$SERVER_ID.sock
fi
##配置mysql.cfg文件
cat << EOG > $CONFIG_FILE
[mysqld]
bind-address = 0.0.0.0 #绑定地址
user=mysql #虚拟用户
basedir=$BASE_MYSQL/mysql5.7 #程序所在目录
datadir=$DATA_MYSQL #数据库存放目录
server_id=$SERVER_ID
port=$PORT
socket=$SOCKET
EOG
##配置自启动文件mysql5.7
cat << EOF > /etc/systemd/system/$FILE_NAME.service
[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_MYSQL/mysql5.7/bin/mysqld --defaults-file=$CONFIG_FILE
LimitNOFILE = 5000
EOF
systemctl daemon-reload
systemctl start $FILE_NAME
if [[ $? -eq 0 ]];then
echo "mysql启动成功!"
else
echo "启动失败,请检查脚本!"
fi
}
hello
user #检查用户函数
if [[ -e $BASE_MYSQL/mysql5.7 ]];then
echo "已找到二进制安装文件!"
else
File_Judge
Unpack
fi
initialize_database
make_configuration
oracle http server实例启动失败_shell脚本安装mysql5.7及多实例
最新推荐文章于 2022-07-28 09:59:09 发布