#!/bin/bash # 定义 MySQL 版本和容器名称 MYSQL_VERSION="8.0.20" CONTAINER_NAME="mysql_8_0_20" # 定义 MySQL 根密码 MYSQL_ROOT_PASSWORD="root" # Folders to delete folders=( "/docker/mysql8/etc" "/docker/mysql8/logs" "/docker/mysql8/data" ) # Loop through each folder and delete it for folder in "${folders[@]}"; do if [ -d "$folder" ]; then echo "Deleting $folder..." rm -rf "$folder" else echo "Folder $folder does not exist." fi done
echo "Deletion complete."
mkdir /docker /docker/mysql8 /docker/mysql8/etc /docker/mysql8/logs /docker/mysql8/data # 拉取 MySQL 镜像 docker pull mysql:$MYSQL_VERSION # 运行 MySQL 容器 docker run -d \ --name $CONTAINER_NAME \ -e MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD \ -p 33306:3306 \ mysql:$MYSQL_VERSION # 检查容器是否运行成功 if [ $? -eq 0 ]; then echo "MySQL $MYSQL_VERSION 容器已成功启动,容器名称为 $CONTAINER_NAME" # 复制配置文件 docker cp $CONTAINER_NAME:/etc/mysql /docker/mysql8/etc # 停止并删除临时容器 docker stop $CONTAINER_NAME docker rm $CONTAINER_NAME # 运行新的 MySQL 容器 docker run \ -p 33306:3306 \ --name mysql8 \ --privileged=true \ --restart unless-stopped \ -v /docker/mysql8/etc/mysql:/etc/mysql \ -v /docker/mysql8/logs:/logs \ -v /docker/mysql8/data:/var/lib/mysql \ -v /etc/localtime:/etc/localtime \ -e MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD \ -d mysql:$MYSQL_VERSION # Wait until MySQL is ready echo "Waiting for MySQL to be ready..." sleep 6 # 修改进入容器
docker exec -i mysql8 mysql -u root -p $MYSQL_ROOT_PASSWORD <<EOF USE mysql; UPDATE user SET Host='%' WHERE User='root'; FLUSH PRIVILEGES; EOF if [ $? -eq 0 ]; then echo "安装Mysql成功 容器名为 mysql8" fi
else echo "启动 MySQL $MYSQL_VERSION 容器失败" fi
添加远程访问权限
1 2 3 4 5 6
mysql -u root -proot -e "USE mysql; UPDATE user SET Host='%' WHERE User='root'; FLUSH PRIVILEGES;" if [ $? -eq 0 ]; then echo "添加远程访问权限成功" fi