mysql二进制一键化部署脚本

mysql二进制一键化部署脚本

执行脚本之前要把下载好的mysql的压缩包提前放到我下面写的项目目录的files目录里

我这里选的Linux-Generic操作系统,下载的是mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz

大家需要什么版本的就下什么版本,下好将脚本里的默认版本号改成自己需要的版本号就行

👉mysql官网下载二进制安装包

项目目录

[root@localhost ~]# cd mysql/
[root@localhost mysql]# tree
.
├── files
│   └── mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
└── mysql_install_single.sh

1 directory, 2 files

脚本内容

执行脚本前要给脚本执行权限

大家在执行脚本的时候实例个数填1就好,其他的回车默认(因为我这个是写MySQL多实例抠出来的单实例),mysql默认密码为12345678

[root@localhost mysql]# ./mysql_install_single.sh
#!/bin/bash

if [ ${UID} -ne 0 ];then
    echo "Please use root"
    exit 1
fi

read -p "请输入要创建的实例个数,默认回车创建一个实例:" count
read -p "请输入安装目录,默认为/usr/local/mysql:" mysql_install_dir
read -p "请输入数据存放目录,默认为/data:" data_dir
read -p "请输入数据库的密码,默认为12345678(密码最少为8位且包含大小写字母,数字与特殊符号):" mysql_passwd

echo $count | grep '^[1-9]\+[0-9]*$' &>/dev/null
if [ $? -ne 0 ];then
    echo "Input error Please try again"
    exit
fi

echo -e "Install Dependent package,Please wait patiently\e[37;5m...... \e[0m"
dnf -y install chkconfig ncurses-compat-libs perl &>/dev/null && \

echo $mysql_install_dir | egrep '^/[a-z]+(/[a-z]*)*$'
if [ $? -eq 0 ];then
    if [ ! -d $mysql_install_dir ];then
        mkdir -p $mysql_install_dir
    fi
else
    mysql_install_dir=/usr/local/mysql
fi

if [ -z $mysql_install_dir ];then
    mysql_install_dir=/usr/local/mysql
fi

if [[ $mysql_install_dir =~ /.*/mysql ]];then
    unzip_dir=$(dirname $mysql_install_dir)
else
    unzip_dir=$mysql_install_dir
fi

echo $data_dir | egrep '^/[a-z]+(/[a-z]*)*$' &>/dev/null
if [ $? -ne 0 ];then
   data_dir=/data
fi
if [ ! -d $data_dir ];then
    mkdir -p $data_dir
fi
if [ -z $data_dir ];then
    data_dir=/data
fi

if [ -z $mysql_passwd ];then
    mysql_passwd=12345678
fi

if [ $count -eq 1 ];then
    id mysql &>/dev/null
    if [ $? -ne 0 ];then
        useradd -rMs /sbin/nologin mysql
    fi
    echo -e "unzip mysql\e[37;5m...... \e[0m"
    tar xf files/mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz -C $unzip_dir
    mv ${unzip_dir}/mysql-5.7.34-linux-glibc2.12-x86_64 ${unzip_dir}/mysql
    chown -R mysql.mysql $mysql_install_dir
    echo "export PATH=${mysql_install_dir}/bin:\$PATH" > /etc/profile.d/mysql.sh
    ln -s ${mysql_install_dir}/include /usr/include/mysql
    echo ${mysql_install_dir}/lib > /etc/ld.so.conf.d/mysql.conf
    ldconfig
    grep mysql /etc/man_db.conf &>/dev/null
    if [ $? -ne 0 ];then
        sed -i "22a MANDATORY_MANPATH ${mysql_install_dir}/man" /etc/man_db.conf
    fi
    chown -R mysql.mysql $data_dir
    ${mysql_install_dir}/bin/mysqld --initialize --user=mysql --datadir=${data_dir} &>/tmp/passwd
    temp_passwd=$(grep 'password' /tmp/passwd | awk '{print $NF}')
    cat > /etc/my.cnf <<EOF
[mysqld]
basedir = ${mysql_install_dir}
datadir = $data_dir
socket = /tmp/mysql.sock
port = 3306
pid-file = ${data_dir}/mysql.pid
user = mysql
skip-name-resolve
EOF
    if [ ! -d /etc/init.d ];then
        mkdir -p /etc/init.d
    fi
    cp -a ${mysql_install_dir}/support-files/mysql.server /etc/init.d/mysqld
    sed -ri "s#^(basedir=).*#\1${mysql_install_dir}#g" /etc/init.d/mysqld
    sed -ri "s#^(datadir=).*#\1${data_dir}#g" /etc/init.d/mysqld
    chmod +x /etc/init.d/mysqld
    chkconfig --add mysqld
    service mysqld start
    sleep 6
    ${mysql_install_dir}/bin/mysql -uroot -p"${temp_passwd}" --connect-expired-password -e "set password = password('${mysql_passwd}');"
    bash
    echo "you set password is $mysql_passwd"
fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随便投投

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值