#!/bin/bash function exist_data() { echo -e "*** 已安装MySQL或者Mariadb,请先卸载并删除数据目录以及配置文件! *** " && exit } if [ -e "/etc/mysql/mysql.cnf" ]; then exist_data elif [ -e "/etc/my.cnf" ]; then exist_data fi SYSTEM=$(grep -E 'VERSION_ID="7|VERSION_ID="8|VERSION_ID="9|NAME="Debian|NAME="Ubuntu"' /etc/os-release) version7=$(echo "$SYSTEM" | grep 'VERSION_ID="7') version8=$(echo "$SYSTEM" | grep 'VERSION_ID="8') version9=$(echo "$SYSTEM" | grep 'VERSION_ID="9') version_debian=$(echo "$SYSTEM" | grep 'NAME="Debian') version_ubuntu=$(echo "$SYSTEM" | grep 'NAME="Ubuntu"') function get_password() { while :; do read -p "请输入MySQL密码: " mysql_root_pwd mmzw=$(echo "$mysql_root_pwd" | awk '{print gensub(/[!-~]/,"","g",$0)}') if [[ ! -n "$mmzw" ]]; then break else echo "请不要输入中文密码!" fi done } function redhat_install_start() { echo -e "********* 安装 Mysql8 ********* " sleep 2 sudo yum -y install mysql-community-server systemctl enable mysqld systemctl start mysqld sleep 5 echo -e "default-authentication-plugin=mysql_native_password" >>/etc/my.cnf echo -e "validate_password.length=1" >>/etc/my.cnf echo -e "validate_password.policy=0" >>/etc/my.cnf tmp_pwd=$(grep 'temporary password' /var/log/mysqld.log) systemctl restart mysqld mysql_root_old_pwd=$(echo ${tmp_pwd#*localhost:}) mysql -uroot --connect-expired-password -p$mysql_root_old_pwd -e "ALTER USER 'root'@'localhost' identified by '$mysql_root_pwd' password expire never;flush privileges;" mysql -uroot -p$mysql_root_pwd -e "use mysql;update user set host = '%' where user = 'root' and host='localhost';flush privileges;ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '$mysql_root_pwd' password expire never;flush privileges;" firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload echo -e " ********* 安装完成 ********* " echo -e "数据库账号:root " echo -e "数据库密码:$mysql_root_pwd " } function debian_install_start() { echo -e "********* 安装 Mysql8 ********* " sleep 1 sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2 sudo apt install dirmngr -y echo PURGE | sudo debconf-communicate mysql-community-server sudo echo "mysql-community-server mysql-community-server/root-pass password $mysql_root_pwd" | sudo debconf-set-selections sudo echo "mysql-community-server mysql-community-server/re-root-pass password $mysql_root_pwd" | sudo debconf-set-selections sudo echo "mysql-community-server mysql-server/default-auth-override select Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)" | sudo debconf-set-selections sudo gpg --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C sudo gpg --export --armor B7B3B788A8D3785C | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/mysql8.gpg sleep 10 echo "deb http://repo.mysql.com/apt/debian/ $(lsb_release -sc) mysql-8.0" | sudo tee /etc/apt/sources.list.d/mysql80.list sudo apt update sudo apt install mysql-community-server -y mysql -uroot -p$mysql_root_pwd -e "update mysql.user set host = '%' where user = 'root';flush privileges;" systemctl restart mysql echo -e " ********* 安装完成 ********* " echo -e "数据库账号:root " echo -e "数据库密码:$mysql_root_pwd " } function ubuntu_install_start() { echo -e "********* 安装 Mysql8 ********* " sleep 1 echo PURGE | sudo debconf-communicate mysql-community-server sudo echo "mysql-community-server mysql-community-server/root-pass password $mysql_root_pwd" | sudo debconf-set-selections sudo echo "mysql-community-server mysql-community-server/re-root-pass password $mysql_root_pwd" | sudo debconf-set-selections sudo echo "mysql-community-server mysql-server/default-auth-override select Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)" | sudo debconf-set-selections sudo gpg --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C sudo gpg --export --armor B7B3B788A8D3785C | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/mysql8.gpg sleep 10 echo "deb http://repo.mysql.com/apt/ubuntu $(lsb_release -sc) mysql-8.0" | sudo tee /etc/apt/sources.list.d/mysql80.list sudo apt update sudo apt install mysql-community-server -y mysql -uroot -p$mysql_root_pwd -e "update mysql.user set host = '%' where user = 'root';flush privileges;" systemctl restart mysql sleep 5 echo -e " ********* 安装完成 ********* " echo -e "数据库账号:root " echo -e "数据库密码:$mysql_root_pwd " } if [[ -n "$version7" ]]; then echo -e " *********此系统为Redhat 7系列操作系统发行版 ********* " sudo yum -y install https://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm get_password redhat_install_start elif [[ -n "$version8" ]]; then echo -e "********* 此系统为Redhat 8系列操作系统发行版 ********* " sudo dnf -y module disable mysql sudo dnf -y install yum sudo dnf -y install https://repo.mysql.com/mysql80-community-release-el8-4.noarch.rpm get_password redhat_install_start elif [[ -n "$version9" ]]; then echo -e "********* 此系统为Redhat 9系列操作系统发行版 ********* " sudo dnf -y install yum sudo dnf -y install https://repo.mysql.com/mysql80-community-release-el9-1.noarch.rpm get_password redhat_install_start elif [[ -n "$version_debian" ]]; then echo -e " *********此系统为Debian系列操作系统发行版 ********* " apt update apt install sudo gawk -y get_password debian_install_start elif [[ -n "$version_ubuntu" ]]; then echo -e " *********此系统为Ubuntu系列操作系统发行版 ********* " apt update sudo apt install dirmngr gawk -y get_password ubuntu_install_start else echo -e "********* 未支持的系统 ********* " && exit fi
适配系统:centos 7,centos 8,centos stream 8,centos stream 9,redhat 7,redhat 8,redhat 9,almalinux 8,almalinux 9,rockylinux 8,rockylinux 9,ubuntu 18.4,ubuntu 20.4,ubuntu 22.4,debian 10,debian 11,debian 12,oraclelinux 7,oraclelinux 8,oraclelinux 9