一键安装 MySQL-5.7.x/8.0.x 二进制包的脚本

注:此脚本适用于centos安装,具体需要根据实际情况进行测试调整。

[root@centos8 ~]# cat install_mysql-8.0.23.sh
#!/bin/bash
#wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz
#wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz
. /etc/init.d/functions
SRC_DIR=`pwd`
#MYSQL='mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz'
MYSQL=mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz
COLOR='echo -e \e[1;31m'
END='\e[0m'
MYSQL_ROOT_PASSWORD=waluna

check () {
if [ $UID -ne 0 ];then
    action "user isn't root,install flase" flase
    exit 1
fi

if [ ! -e $MYSQL ];then
    $COLOR"install file isn't exist"$END
    $COLOR"please download install file"$END
    exit
elif [ -e /usr/local/mysql ];then
    $COLOR"mysql is exist,install flase"$END
    exit
else
    return
fi
}

install_mysql () {
    $COLOR"begin install mysql..."$END
    yum install libaio perl-devel ncurses-compat-libs -y &> /dev/null
    mkdir -p /usr/local/src &> /dev/null
    tar xf $MYSQL -C /usr/local/src
    MYSQL_DIR=`echo $MYSQL|sed -nr 's/(.*[0-9]).*/\1/p'`
    ln -s /usr/local/src/$MYSQL_DIR /usr/local/mysql
    id mysql &> /dev/null || { useradd -r -u 306 -s /bin/false mysql;action "create mysql user";}
    chown -R mysql.mysql /usr/local/mysql/
    echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
    . /etc/profile.d/mysql.sh
    ln -s /usr/local/mysql/bin/* /usr/bin/
    cat > /etc/my.cnf <<EOF
[mysqld]
server-id=1
log-bin
datadir=/data/mysql
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid

[client]
socket=/data/mysql/mysql.sock
EOF
    [ -d /data/mysql ] || mkdir -p /data/mysql
    chown -R mysql.mysql /data/mysql/
    mysqld --initialize --user=mysql --datadir=/data/mysql
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    chkconfig --add mysqld
    chkconfig mysqld on
    service mysqld start
    [ $? -ne 0 ] && { $COLOR"mysql start flase!"$END;exit; }
    MYSQL_OLDPASSWORD=`awk '/temporary password/{print $NF}' /data/mysql/mysql.log`
    mysqladmin -uroot -p$MYSQL_OLDPASSWORD password $MYSQL_ROOT_PASSWORD &> /dev/null
    action "mysql install complete"
}

check
install_mysql