#!/bin/bash# 一键装置mysql5.7.35#安装包下载目录MYSQL_DOWNLOAD_DIR=/data/software/#数据包目录MYSQL_INSTALL_DIR=/data/modules/#数据库信息info_mysql(){    echo "======> MYSQL装置信息 <======";    echo "Mysql版本:5.7.35 ";    echo "下载目录:/data/software/ ";    echo "装置目录:/data/modules/ ";}#旧版mysqluninstall_mysql(){    echo "\n======> MYSQL装置筹备 <======";    echo "残留Mysql检测......."    echo "卸载旧版mysql......."    echo [+] Uninstall Mysql    yum remove mysql* -y    yum remove mariadb* -y    if [ -f "/etc/my.cnf" ];then        rm -rf /etc/my.cnf    fi    if [ -f "/root/.mysql_sercret" ];then        rm -rf /root/.mysql_sercret    fi    if [ -d "/var/lib/mysql" ];then        rm -rf /var/lib/mysql    fi     if [ -d "/usr/lib64/mysql" ];then        rm -rf /usr/lib64/mysql    fi     if [ -d "/usr/share/mysql" ];then        rm -rf /usr/share/mysql    fi    echo "卸载实现!"} #下载mysqlIS_CINTINUE='y';download_mysql(){    echo "装置目录检测......."    if [ ! -d "/data/software" ]; then        echo "创立下载目录......."        mkdir -p /data/software/    fi    if [ ! -d "/data/modules/mysql/" ]; then        echo "创立数据目录......."        mkdir -p /data/modules/    fi    echo " 目录准备就绪 !";    echo "======> MYSQL装置过程 <======";    cd /data/software/    read -p " 确认是否装置?【y/n】" IS_CINTINUE    if [[ $IS_CINTINUE == 'y' ]]; then        echo "请稍等,大概须要20分钟,正在下载MYSQL.......";        cd /data/software/        file="/data/software/mysql-boost-5.7.35.tar.gz"        if [ ! -f $file ]; then            echo "File not found!"            yum install -y wget && wget -c https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.35.tar.gz;            echo "下载实现,正在解压.......";            tar -zxvf mysql-boost-5.7.35.tar.gz -C /data/modules/            cd /data/modules/            mv /data/modules/mysql-5.7.35/ mysql            exit 0        fi        echo "解压实现,执行装置.......";                #yum install -y wget && wget -c https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.35-el7-x86_64.tar.gz;    else        echo "请您自行下载安装包!";        exit;    fi}#装置mysqlinstall_mysql(){    echo "======> 装置mysql依赖....... <======";    yum -y install gcc gcc-devel gcc-c++ gcc-c++-devel autoconf* automake* zlib* libxmlncurses-devel ncurses libgcrypt libtool* cmake openssl openssl-devel bisonbison-devel perl-Data-Dumper boost boost-doc boost-devel    yum -y install gcc make cmake ncurses-devel libxml2-devel libtool-ltdl-devel gcc-c++ autoconf automake bison zlib-devel    echo "======> 装置前的设置 <======";    sleep 2s    cd /data/modules/mysql/    mkdir data    sleep 2s    cmake -DCMAKE_INSTALL_PREFIX=/data/modules/mysql/ \    -DMYSQL_DATADIR=/data/modules/mysql/data \    -DSYSCONFDIR=/etc \    -DWITH_MYISAM_STORAGE_ENGINE=1 \    -DWITH_INNOBASE_STORAGE_ENGINE=1 \    -DWITH_MEMORY_STORAGE_ENGINE=1 \    -DWITH_READLINE=1 \    -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock \    -DMYSQL_TCP_PORT=3306 \    -DWITH_BOOST=/data/modules/mysql/boost \    -DENABLED_LOCAL_INFILE=1 \    -DWITH_PARTITION_STORAGE_ENGINE=1 \    -DEXTRA_CHARSETS=all \    -DDEFAULT_CHARSET=utf8 \    -DDEFAULT_COLLATION=utf8_general_ci    echo "======> 创立mysql用户和组 <======";    cd /data/modules/mysql/    sleep 2s    make && make install    groupadd mysql && useradd mysql -g mysql -M -s /sbin/nologin && chown mysql:mysql /data/modules/mysql/    # if [ $? -eq 0 ];then    #         echo "======> 设置胜利!开始编译装置,大概须要20分钟,急躁期待...<======";    #         sleep 2s    #         make && make install    #         if [ $? -eq 0 ]; then    #             cd ~    #             echo "======> 编译胜利!开始设置组和用户! <======";    #             sleep 2s    #             groupadd mysql && useradd mysql -g mysql -M -s /sbin/nologin && chown mysql:mysql /data/modules/mysql/    #         else    #             echo "======> 编译失败! <======";    #             exit;    #         fi    #     else    #             echo "======> 设置失败! <======";    #             exit;    # fi    echo "======> 装置实现! <======";}#配置Mysqlconfiguration_mysql(){echo "======> 配置mysql <======";cd /data/modules/mysql/touch mysql.pidecho "10254" > /data/modules/mysql/mysql.pidtouch mysql.errtouch mysqld.sockchown mysql:mysql /data/modules/mysql/mysql.pidchown mysql:mysql /data/modules/mysql/mysql.errchown mysql:mysql /data/modules/mysql/data/mysqld.sockcat > /etc/my.cnf<<EOF[client]port            = 3306socket          = /data/modules/mysql/data/mysqld.sock[mysqld]#server-id  = 6878                           #运行IDbind-address=0.0.0.0                        #绑定地址运行近程连贯port=3306                                   #Mysql凋谢的端口user=mysql                                  #数据库登录用户basedir=/data/modules/mysql/                #Mysql装置的绝对路径datadir=/data/modules/mysql/data            #Mysql数据寄存的绝对路径socket=/data/modules/mysql/data/mysqld.sock #套接字文件log-error=/data/modules/mysql/mysql.err     #mysql生成的谬误日志寄存的门路pid-file=/data/modules/mysql/mysql.pid      #为mysqld程序指定一个寄存过程ID的文件character_set_server=utf8                   #数据库字符编码symbolic-links=0                            #是否开启链接符号explicit_defaults_for_timestamp=true        #数据库timestamp类型的列自动更新  EOFsleep 2secho "初始化mysql.......";cd /data/modules/mysql/bin./mysqld --defaults-file=/etc/my.cnf --basedir=/data/modules/mysql/ --datadir=/data/modules/mysql/data/ --user=mysql --initializeln -s  /data/modules/mysql/bin/mysql    /usr/bin}#将mysql设置成为服务启动service_mysql(){    echo "======> 制作服务启动 <======";    cd /data/modules/mysql    /bin/cp -rf support-files/mysql.server /etc/init.d/mysqld    chmod a+wrx /etc/init.d/mysqld    if [ $? -eq 0 ]; then        echo "======> 服务设置胜利! <======";        cd ~        service mysqld start        sleep 2s        service mysqld stop        sleep 2s    else        echo "======> 服务设置失败! <======";    fi    echo "======> 增加到开机启动项! <======";    chkconfig --add mysqld    if [ $? -eq 0 ]; then        echo "======> 设置开机启动项胜利! <======";    else        echo "======> 设置开机启动项失败! <======";    fi    service mysqld stop    echo "======> 配置环境变量 <======";    echo "export PATH=$PATH:/data/modules/mysql/bin/" >>/etc/profile    source /etc/profile    echo "启动mysql服务....... ";    service mysqld start    echo "Mysql曾经启动....... ";}#启动数据库设置明码# mysql_password='123456'# up_mysql(){#     cd /data/modules/mysql/#     echo "======> 请输出数据库明码: <======";#     read -p "输出明码:" -s mysql_password echo#     echo password read, is "$mysql_password"#     # read -p " 确认是否装置?【y/n】" IS_CINTINUE#     # ./bin/mysqladmin -u root password "123456"#     if [ $? -eq 0 ];then#         echo "设置root明码胜利!";#     else#         echo "设置root明码失败!";#     fi#     source /etc/profile# }#完结装置end_mysql(){    echo "运行端口: 3306"    echo "数据库用户: mysql"    echo "数据库root明码(root@localhost前面):"    cat /data/modules/mysql/mysql.err | grep root@localhost:    echo "数据库装置门路: /data/modules/mysql/  "    echo "数据库数据门路: /data/modules/mysql/data  "    mysql -uroot -p}#装置流程mysql(){    #数据库信息    info_mysql    #旧版数据库卸载    uninstall_mysql    #下载数据库    download_mysql    #装置数据库    install_mysql    #配置数据库    configuration_mysql    #数据库以服务启动    service_mysql    #启动MySQL设置明码    #显示数据库信息    info_mysql    end_mysql}mysql