添加 mysql.sh
This commit is contained in:
parent
1a0a0d832d
commit
f927db4e6d
115
mysql.sh
Normal file
115
mysql.sh
Normal file
@ -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}"
|
Loading…
x
Reference in New Issue
Block a user