Bash 指令碼安裝 MySQL-8.0.20 資料庫

linzening發表於2020-05-05

一、基礎環境檢測建立資料夾與下載資料庫安裝包

  • 環境:

    • 阿里雲ECS CentOS8.1
    • MySQL8.0.20-el8版本
  • 檢測存放安裝包的目錄是否存在

if [ ! -d "/root/mysql" ];then
    Echo_Blue '[info] 建立資料夾:/root/mysql'
    mkdir /root/mysql
else
    Echo_Yellow "[info] 資料夾/root/mysql已經存在,繼續執行..."
fi
cd /root/mysql
  • 檢測安裝包是否已經下載
if [ ! -f "/root/mysql/mysql-8.0.20-1.el8.x86_64.rpm-bundle.tar" ];then
    Echo_Blue '[info] Mysql包不存在,正在下載'
    wget https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-8.0.20-1.el8.x86_64.rpm-bundle.tar
else
    Echo_Blue "[info] Mysql包已存在,繼續執行..."
fi

二、解壓資料庫安裝包

tar -xvf mysql-8.0.20-1.el8.x86_64.rpm-bundle.tar

三、判斷是否解壓完成,並安裝

if [ ! -f "mysql-community-common-8.0.20-1.el8.x86_64.rpm" ];then
    Echo_Red '[error] 解壓失敗,請檢查'
    exit
else
    Echo_Green "[info] MySQL安裝中,繼續執行..."
    rpm -ivh mysql-community-common-8.0.20-1.el8.x86_64.rpm --nodeps --force
    rpm -ivh mysql-community-libs-8.0.20-1.el8.x86_64.rpm --nodeps --force
    rpm -ivh mysql-community-client-8.0.20-1.el8.x86_64.rpm --nodeps --force
    rpm -ivh mysql-community-server-8.0.20-1.el8.x86_64.rpm --nodeps --force
fi

四、修改my.cnf配置檔案

  • 修改密碼驗證方式(根據需要設定)
if [ `grep -c "default_authentication_plugin=mysql_native_password" /etc/my.cnf` -eq '0' ]; then
    sed -i 's/\[mysqld\]/\[mysqld\]\ndefault_authentication_plugin=mysql_native_password/' /etc/my.cnf
    Echo_Blue "[info] 配置default_authentication_plugin=mysql_native_password"
else
    Echo_Yellow "[info] /etc/my.cnf已存在default_authentication_plugin=mysql_native_password"
fi
  • 修改sql_mode,建議設定
if [ `grep -c "sql_mode" /etc/my.cnf` -eq '0' ]; then
    sed -i 's/\[mysqld\]/\[mysqld\]\nsql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES/' /etc/my.cnf
    Echo_Green "[info] 配置sql_mode完成"
else
    Echo_Blue "[info] /etc/my.cnf已存在sql_mode"
fi

五、初始化配置並修改密碼

mysqld --initialize
if [ `grep -c "mysql" /etc/group` -eq '0' ]; then
    Echo_Yellow "[info] 不存在mysql使用者,正在新增"
    groupadd mysql
    useradd -s /sbin/nologin -M -g mysql mysql
else
    Echo_Yellow "[info] 授予mysql使用者許可權"
    chown mysql:mysql /var/lib/mysql -R
    if [ ! -f "/var/log/mysqld.log" ];then
        Echo_Red "[error] /var/log/mysqld.log檔案不存在,請檢查。"
    else
        Echo_Green "[info] 原始密碼:"
        cat /var/log/mysqld.log|grep "A temporary password is generated for root@localhost:" |awk -F "host:" '{print $2}'
        Echo_Yellow "[info] 請先修改密碼mysql_secure_installation"
    fi
    Echo_Green "[info] 安裝完成。"
fi
  • 設定新密碼,輸入原始密碼並輸入新密碼
mysql_secure_installation
  • 重啟mysql
systemctl start mysqld.service

六、執行指令碼自動安裝

wget https://linzening.gitee.io/bash/mysql8020el8.sh && bash mysql8020el8.sh
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章