my/mysql.sh

115 lines
3.9 KiB
Bash
Raw Normal View History

2025-02-20 04:41:32 +00:00
#!/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端口和密码
2025-02-20 04:42:19 +00:00
read -p "请输入MySQL端口(默认3306): " MYSQL_PORT
2025-02-20 04:41:32 +00:00
MYSQL_PORT=${MYSQL_PORT:-3306}
2025-02-20 04:42:19 +00:00
read -s -p "请输入MySQL root用户密码:" MYSQL_ROOT_PASSWORD
2025-02-20 04:41:32 +00:00
echo
# 用户选择是否使用国内源
2025-02-20 04:42:19 +00:00
read -p "是否使用国内镜像源以加快下载速度?(y/n, 默认y): " USE_CHINA_MIRROR
2025-02-20 04:41:32 +00:00
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}"