centos9 stream 阿里服务器安装 MySQL8.0.43
#!/bin/bash set -eMYSQL_PORT=3309 MYSQL_ROOT_PASS='Hj4726e5b224486d2d93e019ea9f34c9Jens?!' MYSQL_DATA_DIR="/var/lib/mysql"echo "1. 卸载老旧MySQL和MariaDB" yum remove -y mysql* mariadb* || trueecho "2. 清理数据目录和日志(谨慎,确保备份)" rm -rf ${MYSQL_DATA_DIR}/* rm -f /var/log/mysqld.log || trueecho "3. 导入GPG Key" rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023echo "4. 安装MySQL官方repo" yum install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpmecho "5. 清理yum缓存" yum clean allecho "6. 安装MySQL-server" yum install -y mysql-community-serverecho "7. 修改MySQL配置文件" cat >/etc/my.cnf <<EOF [mysqld] port=${MYSQL_PORT} basedir=/usr datadir=${MYSQL_DATA_DIR} socket=/var/lib/mysql/mysql.sock user=mysql symbolic-links=0skip-name-resolve bind-address=0.0.0.0character-set-server=utf8mb4 collation-server=utf8mb4_general_ci init_connect='SET NAMES utf8mb4'default-storage-engine=INNODB innodb_file_per_table=1 innodb_default_row_format=DYNAMIC max_connections=64 EOFecho "8. 初始化MySQL数据目录" mysqld --initialize-insecure --user=mysql --datadir=${MYSQL_DATA_DIR}echo "9. 启动MySQL服务" systemctl enable mysqld systemctl start mysqldecho "10. 等待MySQL启动" sleep 10echo "11. 设置root密码和远程访问权限" mysql -uroot <<EOF ALTER USER 'root'@'localhost' IDENTIFIED BY '${MYSQL_ROOT_PASS}'; CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASS}'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; EOFecho "12. 开放防火墙端口${MYSQL_PORT}" if systemctl is-active firewalld &>/dev/null; thenfirewall-cmd --permanent --add-port=${MYSQL_PORT}/tcpfirewall-cmd --reload elseecho "防火墙未运行,跳过开放端口" fiecho "13. 重启MySQL服务应用配置" systemctl restart mysqldecho "=== MySQL安装完成 ===" echo "端口:${MYSQL_PORT}" echo "root密码:${MYSQL_ROOT_PASS}" echo "字符集:utf8mb4" echo "排序规则:utf8mb4_general_ci" echo "最大连接数:64"
#!/bin/bash set -eMYSQL_PORT=3309 MYSQL_DATA_DIR="/var/lib/mysql" MYSQL_LOG_FILE="/var/log/mysqld.log"echo "1. 停止MySQL服务" systemctl stop mysqld || true systemctl disable mysqld || trueecho "2. 卸载MySQL相关软件包" yum remove -y mysql-community-server mysql-community-client mysql-community-common mysql-community-libs mysql-community-client-plugins || trueecho "3. 删除MySQL数据目录" rm -rf ${MYSQL_DATA_DIR} || trueecho "4. 删除MySQL日志文件" rm -f ${MYSQL_LOG_FILE} || trueecho "5. 删除MySQL配置文件" rm -f /etc/my.cnf rm -rf /etc/my.cnf.d || trueecho "6. 删除MySQL官方仓库" yum remove -y mysql80-community-release || trueecho "7. 清理yum缓存" yum clean allecho "8. 移除防火墙开放的3309端口" if systemctl is-active firewalld &>/dev/null; thenfirewall-cmd --permanent --remove-port=${MYSQL_PORT}/tcp || truefirewall-cmd --reload elseecho "防火墙未运行,跳过端口关闭" fiecho "=== MySQL彻底卸载完成 ==="
-- 授权执行,或者777 chmod +x mysql_install.sh sudo ./mysql_install.sh chmod +x mysql_uninstall.sh sudo ./mysql_uninstall.sh-- 查看版本 mysql --version-- 运行状态 systemctl status mysqld-- 启动服务 systemctl start mysqld-- 停止服务 systemctl stop mysqld-- 重启服务 systemctl restart mysqld
#!/bin/bash# 备份配置 BACKUP_DIR="/etc/lsy_mysql" DB_NAME="alitemp" MYSQL_USER="root" MYSQL_PASS="Hj4726e5b224486d2d93e019ea9f34c9Jens?!" DATE=$(date +'%Y%m%d_%H%M%S') BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_backup_${DATE}.sql.gz"# 创建备份目录(如果不存在) mkdir -p "$BACKUP_DIR"# 导出数据库并压缩 mysqldump -u${MYSQL_USER} -p${MYSQL_PASS} ${DB_NAME} | gzip > "${BACKUP_FILE}"# 可选:删除7天前的备份文件(保持最近7天备份) find "$BACKUP_DIR" -name "${DB_NAME}_backup_*.sql.gz" -type f -mtime +7 -exec rm -f {} \;
-- 授权执行 chmod +x /etc/lsy_mysql/backup_alitemp.sh-- 查看定时任务 crontab -l-- 修改定时任务 crontab -e-- 添加一行 30 3 * * * /etc/lsy_mysql/backup_alitemp.sh -- 每天凌晨3点30分执行一次这个脚本over-- 手动跑脚本验证 /etc/lsy_mysql/backup_alitemp.sh alitemp_backup_20250812_030000.sql.gz
