my.cnf

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[mysqld]
datadir=/data/mysql
socket=/var/lib/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket      = /var/lib/mysql/mysql.sock
port        = 3306

mysql-install.sh

#!/bin/bash
CURRENTDIR=`pwd`
NAME="mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz"
FULL_NAME=${CURRENTDIR}/${NAME}
DATA_DIR="/data/mysql/"

StandardOutput(){
    echo -e "\033[1;32m$1 ... \033[0m"
}
ErrorOutput(){
    echo -e "\033[1;31m$1 ... \033[0m"
}

is_empty_dir(){ 
    return `ls -A $1 2>/dev/null | wc -l`
}

judge_mysql(){
    if [ -e /usr/local/mysql ];then
        ErrorOutput "/usr/local/mysql目录存在...Mysql 似乎已经安装...终止安装..."
        exit 10
    fi
    which mysqld &>/dev/null
    if [ "$?" -eq 0 ];then
        ErrorOutput "mysqld命令存在...Mysql 似乎已经安装...终止安装..."
        exit 20
    fi
    if  ss -ltn | grep 3306 -q;then
        ErrorOutput "3306端口被占用...Mysql 似乎已经安装...终止安装..."
        exit 30
    fi
    is_empty_dir $DATA_DIR
    if [ ! "$?" -eq 0 ];then
        ErrorOutput "$DATA_DIR 不为空...终止安装..."
        exit 40            
    fi
}

download_mysql(){
    if [ -f ${FULL_NAME} ];then
    StandardOutput "Mysql安装文件存在,开始安装..."
else
    StandardOutput "Mysql安装文件不存在...开始下载..."
    curl -o ${NAME} https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-5.7/${NAME}
    if [ ! "$?" -eq 0 ];then
        ErrorOutput "下载失败...终止安装..." && exit 50
    fi
fi
}
mysql_install(){
    # install dependence
    yum install -y libaio-devel
    if id  mysql &>/dev/null;then
        StandardOutput "mysql 用户已经存在,跳过创建用户过程..."
    else
        useradd -r    -s /sbin/nologin mysql
    fi       
    tar xf ${FULL_NAME}   -C /usr/local/
    ln -sv /usr/local/mysql-5*  /usr/local/mysql 
    chown  -R mysql.mysql  /usr/local/mysql/
    if [ ! -d  $DATA_DIR ];then
        mkdir -pv $DATA_DIR && chown  -R mysql.mysql  $DATA_DIR   -R
    fi
    /usr/local/mysql/bin/mysqld  --initialize --datadir=$DATA_DIR --user=mysql &>mysql_install.log
    cp  /usr/local/mysql-5.*-x86_64/support-files/mysql.server /etc/init.d/mysqld
    chmod a+x /etc/init.d/mysqld
    cp ${CURRENTDIR}/my.cnf   /etc/my.cnf
    echo 'export PATH=/usr/local/mysql/bin/:$PATH' > /etc/profile.d/mysql.sh
    source /etc/profile.d/mysql.sh
    # /etc/init.d/mysqld start

    mkdir /var/lib/mysql /var/run/mysqld
    chown mysql.mysql /var/lib/mysql/ /var/run/mysqld
    systemctl daemon-reload
}

mysql_check(){
    systemctl start mysqld
    if ss -ltn | grep 3306 -q ;then
        StandardOutput "VERY GOOD..."
        rm -f ${CURRENTDIR}/${NAME}
    fi
    echo -e "请手动执行:\033[1;32msource /etc/profile\033[0m"
    echo -e "当前mysql数据库密码为:\033[1;32m$( grep "temporary password" ${CURRENTDIR}/mysql_install.log | awk '{print $NF}')\033[0m"    
}


main(){
    judge_mysql
    download_mysql
    mysql_install
    mysql_check
}
main