#!/bin/bash
PACKAGE_NAME=”mysql-8.0.27-el7-x86_64.tar.gz”
DOWNLOAD_URL=”https://mirrors.aliyun.com/mysql/MySQL-8.0/${PACKAGE_NAME}”
# 颜色定义(可选)
RED=’\033[0;31m’
GREEN=’\033[0;32m’
NC=’\033[0m’ # No Color
# 安装依赖
install_dependencies() {
echo “安装依赖包…”
yum -y install libaio numactl-libs ncurses-compat-libs wget
if [ $? -ne 0 ]; then
echo -e “${RED}依赖包安装失败${NC}”
exit 1
fi
}
# 创建用户和组
create_mysql_user() {
echo “创建MySQL用户和组…”
# 检查组是否存在
if ! getent group mysql > /dev/null 2>&1; then
groupadd -r mysql
fi
# 检查用户是否存在
if ! id mysql > /dev/null 2>&1; then
useradd -r -g mysql -s /sbin/nologin mysql
fi
}
# 下载解压安装包
Download() {
echo “检查安装包…”
# 修正:if条件要有空格
if [ -f “./${PACKAGE_NAME}” ]; then
echo “安装包已存在”
else
echo “安装包不存在,开始下载安装包…”
wget ${DOWNLOAD_URL}
if [ $? -ne 0 ]; then
echo -e “${RED}下载失败,请检查网络或URL${NC}”
exit 1
fi
fi
echo “开始解压…”
# 检查目标目录是否存在
if [ ! -d “/usr/local” ]; then
mkdir -p /usr/local
fi
tar xf ${PACKAGE_NAME} -C /usr/local/
if [ $? -ne 0 ]; then
echo -e “${RED}解压失败${NC}”
exit 1
fi
}
# 安装配置MySQL
Install() {
echo “开始安装配置MySQL…”
cd /usr/local/
# 创建软链接
if [ -d “mysql-8.0.27-el7-x86_64” ]; then
ln -sf mysql-8.0.27-el7-x86_64 mysql
else
echo -e “${RED}MySQL目录不存在,安装失败${NC}”
exit 1
fi
# 设置目录权限
chown -R root:root mysql/
# 设置环境变量
echo ‘export PATH=/usr/local/mysql/bin:$PATH’ > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
# 创建配置文件 – 使用<<-EOF去掉开头的制表符
cat > /etc/my.cnf <<-‘EOF’
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock
EOF
# 创建数据目录并设置权限
mkdir -pv /data/mysql
chown -R mysql:mysql /data/mysql
chmod 750 /data/mysql
# 初始化数据库
echo “初始化数据库…”
mysqld –initialize –user=mysql –datadir=/data/mysql
if [ $? -ne 0 ]; then
echo -e “${RED}数据库初始化失败${NC}”
exit 1
fi
# 获取初始密码
if [ -f “/data/mysql/mysql.log” ]; then
temp_password=$(grep ‘temporary password’ /data/mysql/mysql.log | awk ‘{print $NF}’)
if [ -n “$temp_password” ]; then
echo -e “${GREEN}初始临时密码: ${temp_password}${NC}”
echo “请妥善保存并立即修改密码”
fi
fi
# 创建启动脚本
if [ -f “/usr/local/mysql/support-files/mysql.server” ]; then
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig –add mysqld
fi
# 启动服务
echo “启动MySQL服务…”
systemctl start mysqld.service
if [ $? -eq 0 ]; then
# 检查服务是否真的在运行
sleep 3
if systemctl is-active –quiet mysqld; then
echo -e “${GREEN}MySQL 安装成功!${NC}”
echo “”
echo “重要信息:”
echo “1. MySQL服务已启动”
echo “2. 安装目录: /usr/local/mysql”
echo “3. 数据目录: /data/mysql”
echo “4. 配置文件: /etc/my.cnf”
echo “5. 启动脚本: /etc/init.d/mysqld”
echo “6. 临时密码: ${temp_password:-请查看/data/mysql/mysql.log}”
echo “”
echo “后续操作:”
echo “1. 请执行命令 source /etc/profile.d/mysql.sh”
echo “2. 修改root密码: mysql -uroot -p’${temp_password}’ -e \”ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新密码’;\””
echo “3. 设置开机自启: systemctl enable mysqld”
else
echo -e “${YELLOW}MySQL服务启动但可能未正常运行,请检查日志${NC}”
echo “查看日志: tail -f /data/mysql/mysql.log”
fi
else
echo -e “${RED}MySQL安装失败${NC}”
echo “请检查错误日志: tail -f /data/mysql/mysql.log”
exit 1
fi
}
# 主执行流程
main() {
echo “===== MySQL 8.0.27 安装脚本 =====”
# 检查是否以root运行
if [ “$(id -u)” -ne 0 ]; then
echo “请使用root权限运行此脚本”
exit 1
fi
# 执行安装步骤
install_dependencies
create_mysql_user
Download
Install
echo “===== 安装完成 =====”
}
# 执行主函数
main
发表回复