From f927db4e6da54834d5339906f072625c1d55c1b4 Mon Sep 17 00:00:00 2001 From: lc Date: Thu, 20 Feb 2025 04:41:32 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20mysql.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mysql.sh | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 mysql.sh diff --git a/mysql.sh b/mysql.sh new file mode 100644 index 0000000..4e23688 --- /dev/null +++ b/mysql.sh @@ -0,0 +1,115 @@ +#!/bin/bash + +# 检测系统类型 +if [ -f /etc/os-release ]; then + . /etc/os-release + OS=$ID + OS_VERSION=$VERSION_ID +elif type lsb_release >/dev/null 2>&1; then + OS=$(lsb_release -si | tr '[:upper:]' '[:lower:]') + OS_VERSION=$(lsb_release -sr) +elif [ -f /etc/redhat-release ]; then + OS=centos + OS_VERSION=$(grep -oE '[0-9]+\.[0-9]+' /etc/redhat-release) +else + echo "不支持的操作系统" + exit 1 +fi + +# 用户输入MySQL端口和密码 +read -p "请输入MySQL端口(默认3306):" MYSQL_PORT +MYSQL_PORT=${MYSQL_PORT:-3306} + +read -s -p "请输入MySQL root用户密码:" MYSQL_ROOT_PASSWORD +echo + +# 用户选择是否使用国内源 +read -p "是否使用国内镜像源以加快下载速度?(y/n,默认y):" USE_CHINA_MIRROR +USE_CHINA_MIRROR=${USE_CHINA_MIRROR:-y} + +# 配置国内镜像源 +configure_china_mirror() { + case $OS in + ubuntu|debian) + echo "正在配置阿里云镜像源..." + sudo sed -i 's|http://archive.ubuntu.com|http://mirrors.aliyun.com|g' /etc/apt/sources.list + sudo sed -i 's|http://security.ubuntu.com|http://mirrors.aliyun.com|g' /etc/apt/sources.list + ;; + centos|rocky) + echo "正在配置阿里云镜像源..." + sudo sed -i 's|^mirrorlist=|#mirrorlist=|g' /etc/yum.repos.d/CentOS-* + sudo sed -i 's|^#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' /etc/yum.repos.d/CentOS-* + ;; + *) + echo "不支持的操作系统,无法配置国内镜像源" + ;; + esac +} + +# 安装MySQL 8 +install_mysql() { + case $OS in + ubuntu|debian) + echo "正在更新软件包列表..." + sudo apt-get update + sudo apt-get install -y wget + + echo "正在下载MySQL APT配置..." + wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb + sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb + + echo "正在安装MySQL服务器..." + sudo apt-get update + sudo apt-get install -y mysql-server + + echo "正在配置MySQL..." + sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '${MYSQL_ROOT_PASSWORD}';" + sudo mysql -e "FLUSH PRIVILEGES;" + ;; + centos|rocky) + echo "正在安装MySQL YUM仓库..." + sudo yum install -y wget + sudo rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el${OS_VERSION:0:1}-3.noarch.rpm + + echo "正在安装MySQL服务器..." + sudo yum install -y mysql-server + + echo "正在启动MySQL服务..." + sudo systemctl start mysqld + sudo systemctl enable mysqld + + echo "正在配置MySQL..." + TEMP_PASSWORD=$(sudo grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}') + mysql -uroot -p${TEMP_PASSWORD} --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}';" + mysql -uroot -p${MYSQL_ROOT_PASSWORD} -e "FLUSH PRIVILEGES;" + ;; + *) + echo "不支持的操作系统" + exit 1 + ;; + esac + + # 修改MySQL配置文件以使用用户指定的端口 + echo "正在修改MySQL端口为 ${MYSQL_PORT}..." + sudo sed -i "s/^port\s*=\s*[0-9]*/port = ${MYSQL_PORT}/" /etc/my.cnf || sudo sed -i "s/^port\s*=\s*[0-9]*/port = ${MYSQL_PORT}/" /etc/mysql/my.cnf + + # 重启MySQL服务以应用更改 + echo "正在重启MySQL服务..." + if [ "$OS" == "centos" ] || [ "$OS" == "rocky" ]; then + sudo systemctl restart mysqld + else + sudo systemctl restart mysql + fi +} + +# 配置国内镜像源 +if [[ $USE_CHINA_MIRROR =~ ^[Yy]$ ]]; then + configure_china_mirror +fi + +# 执行安装 +install_mysql + +echo "MySQL 8 安装完成!" +echo "MySQL root 密码: ${MYSQL_ROOT_PASSWORD}" +echo "MySQL 端口: ${MYSQL_PORT}" \ No newline at end of file