my/mysql.sh
2025-02-20 04:41:32 +00:00

115 lines
3.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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}"