hj_2025_0812

centos9 stream 阿里服务器安装 MySQL8.0.43

#!/bin/bash
set -e

MYSQL_PORT=3309
MYSQL_ROOT_PASS='Hj4726e5b224486d2d93e019ea9f34c9Jens?!'
MYSQL_DATA_DIR="/var/lib/mysql"

echo "1. 卸载老旧MySQL和MariaDB"
yum remove -y mysql* mariadb* || true

echo "2. 清理数据目录和日志(谨慎,确保备份)"
rm -rf ${MYSQL_DATA_DIR}/*
rm -f /var/log/mysqld.log || true

echo "3. 导入GPG Key"
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

echo "4. 安装MySQL官方repo"
yum install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm

echo "5. 清理yum缓存"
yum clean all

echo "6. 安装MySQL-server"
yum install -y mysql-community-server

echo "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=0

skip-name-resolve
bind-address=0.0.0.0

character-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
EOF

echo "8. 初始化MySQL数据目录"
mysqld --initialize-insecure --user=mysql --datadir=${MYSQL_DATA_DIR}

echo "9. 启动MySQL服务"
systemctl enable mysqld
systemctl start mysqld

echo "10. 等待MySQL启动"
sleep 10

echo "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;
EOF

echo "12. 开放防火墙端口${MYSQL_PORT}"
if systemctl is-active firewalld &>/dev/null; then
    firewall-cmd --permanent --add-port=${MYSQL_PORT}/tcp
    firewall-cmd --reload
else
    echo "防火墙未运行,跳过开放端口"
fi

echo "13. 重启MySQL服务应用配置"
systemctl restart mysqld

echo "=== MySQL安装完成 ==="
echo "端口:${MYSQL_PORT}"
echo "root密码:${MYSQL_ROOT_PASS}"
echo "字符集:utf8mb4"
echo "排序规则:utf8mb4_general_ci"
echo "最大连接数:64"
一键脚本运行
#!/bin/bash
set -e

MYSQL_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 || true

echo "2. 卸载MySQL相关软件包"
yum remove -y mysql-community-server mysql-community-client mysql-community-common mysql-community-libs mysql-community-client-plugins || true

echo "3. 删除MySQL数据目录"
rm -rf ${MYSQL_DATA_DIR} || true

echo "4. 删除MySQL日志文件"
rm -f ${MYSQL_LOG_FILE} || true

echo "5. 删除MySQL配置文件"
rm -f /etc/my.cnf
rm -rf /etc/my.cnf.d || true

echo "6. 删除MySQL官方仓库"
yum remove -y mysql80-community-release || true

echo "7. 清理yum缓存"
yum clean all

echo "8. 移除防火墙开放的3309端口"
if systemctl is-active firewalld &>/dev/null; then
    firewall-cmd --permanent --remove-port=${MYSQL_PORT}/tcp || true
    firewall-cmd --reload
else
    echo "防火墙未运行,跳过端口关闭"
fi

echo "=== 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
定时任务执行备份脚本

 

[ec2-user@ip-10-0-13-1 ~]$ sudo passwd root
更改用户 root 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[ec2-user@ip-10-0-13-1 ~]$ vi /etc/ssh/sshd_config 
[ec2-user@ip-10-0-13-1 ~]$ 
# 这个会没有权限修改,所以要切root用户再修改su rootvi /etc/ssh/sshd_config修改如下:PermitRootLogin yes          #原来是注释掉的PasswordAuthentication yes  # 原来默认是 no
[root@ip-10-0-13-1 ec2-user]# vi /etc/ssh/sshd_config [root@ip-10-0-13-1 ec2-user]# sudo service sshd restartRedirecting to /bin/systemctl restart sshd.service[root@ip-10-0-13-1 ec2-user]#
 
然后就可以密码登录了  然后安装个docker吧~
[root@ip-10-0-13-1 ~]# yum install docker      y
[root@ip-10-0-13-1 ~]# systemctl restart docker[root@ip-10-0-13-1 ~]# systemctl status docker.service● docker.service - Docker Application Container Engine
...
ec2操作root可登录

 

// 第一种. docker运行 用.sh脚本

创建 jens_01mysql.sh

#!/bin/bash
# 一键安装 MySQL 9.4 (Docker 版),默认字符集 utf8mb4

MYSQL_VERSION=9.4
MYSQL_PORT=3311
MYSQL_ROOT_PASSWORD="Jens20250826001hjIsOk"
MYSQL_DATA_DIR="/home/jens/mysql"

# 创建数据目录
mkdir -p ${MYSQL_DATA_DIR}
chmod -R 777 ${MYSQL_DATA_DIR}

# 停掉并删除可能已有的容器
docker stop mysql9.4 >/dev/null 2>&1
docker rm mysql9.4 >/dev/null 2>&1

# 拉取镜像
echo "正在拉取 MySQL ${MYSQL_VERSION} 镜像..."
docker pull mysql:${MYSQL_VERSION}

# 启动容器
echo "正在启动 MySQL 容器..."
docker run -d \
  --name mysql9.4 \
  -p ${MYSQL_PORT}:3306 \
  -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} \
  -v ${MYSQL_DATA_DIR}:/var/lib/mysql \
  mysql:${MYSQL_VERSION} \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_general_ci

# 检查运行状态
sleep 3
docker ps | grep mysql9.4 && echo "✅ MySQL ${MYSQL_VERSION} 已经启动成功,端口 ${MYSQL_PORT}" || echo "❌ MySQL 启动失败"


运行脚本即可;
第二种, 用 docker compose 来启动
创建 jens_02mysql.yml 文件

version: "3.8"
services:
  mysql9.4:
    image: mysql:9.4
    container_name: mysql9.4
    restart: always
    ports:
      - "3311:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "Jens20250826001hjIsOk"
    command:
      --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
    volumes:
      - /home/jens/mysql:/var/lib/mysql


运行 
docker-compose -f jens_02mysql.yml up -d
因为文件名不是默认的docker-compose.yml 所以要 -f指令文件名
docker安装mysql 9.4的两种方法

 

posted @ 2025-08-12 15:49  独孤~华剑  阅读(3)  评论(0)    收藏  举报
独孤华剑