mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-10-06 01:56:37 +08:00
添加重置数据库密码功能
This commit is contained in:
+15
-35
@@ -960,36 +960,13 @@ reset_mysql_password() {
|
|||||||
# 以跳过权限验证模式启动MySQL容器
|
# 以跳过权限验证模式启动MySQL容器
|
||||||
echo "🔧 以跳过权限验证模式启动MySQL容器..."
|
echo "🔧 以跳过权限验证模式启动MySQL容器..."
|
||||||
|
|
||||||
# 获取MySQL镜像名称 - 根据docker-compose配置
|
# MySQL配置 - 固定值(来自docker-compose配置)
|
||||||
# 检查IPv6配置来确定使用哪个镜像版本
|
MYSQL_IMAGE="mysql:5.7"
|
||||||
if check_ipv6_support > /dev/null 2>&1; then
|
MYSQL_CONTAINER="gost-mysql"
|
||||||
# IPv6环境通常使用v6版本的compose文件
|
MYSQL_VOLUME="mysql_data"
|
||||||
MYSQL_IMAGE="mysql:5.7"
|
|
||||||
else
|
|
||||||
# IPv4环境使用v4版本的compose文件
|
|
||||||
MYSQL_IMAGE="mysql:5.7"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 如果docker-compose.yml存在,从中获取实际的镜像名称
|
|
||||||
if [[ -f "docker-compose.yml" ]]; then
|
|
||||||
MYSQL_IMAGE_FROM_FILE=$(grep -A 10 "mysql:" docker-compose.yml | grep "image:" | head -1 | sed 's/.*image:[[:space:]]*//' | xargs)
|
|
||||||
if [[ -n "$MYSQL_IMAGE_FROM_FILE" ]]; then
|
|
||||||
MYSQL_IMAGE="$MYSQL_IMAGE_FROM_FILE"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "🖼️ MySQL镜像: $MYSQL_IMAGE"
|
echo "🖼️ MySQL镜像: $MYSQL_IMAGE"
|
||||||
|
echo "📦 MySQL容器: $MYSQL_CONTAINER"
|
||||||
# 获取数据库卷挂载路径
|
|
||||||
MYSQL_VOLUME=$(docker volume ls | grep -E "(mysql|gost.*mysql)" | awk '{print $2}' | head -1)
|
|
||||||
|
|
||||||
if [[ -z "$MYSQL_VOLUME" ]]; then
|
|
||||||
echo "❌ 未找到MySQL数据卷"
|
|
||||||
echo "🔍 当前所有数据卷:"
|
|
||||||
docker volume ls
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "📀 MySQL数据卷: $MYSQL_VOLUME"
|
echo "📀 MySQL数据卷: $MYSQL_VOLUME"
|
||||||
|
|
||||||
# 启动临时MySQL容器(跳过权限验证)
|
# 启动临时MySQL容器(跳过权限验证)
|
||||||
@@ -1075,11 +1052,14 @@ EOF
|
|||||||
# 等待服务启动
|
# 等待服务启动
|
||||||
echo "⏳ 等待服务启动..."
|
echo "⏳ 等待服务启动..."
|
||||||
|
|
||||||
|
# 固定容器名称
|
||||||
|
BACKEND_CONTAINER="springboot-backend"
|
||||||
|
|
||||||
# 检查数据库容器健康状态
|
# 检查数据库容器健康状态
|
||||||
echo "🔍 检查数据库服务状态..."
|
echo "🔍 检查数据库服务状态..."
|
||||||
for i in {1..60}; do
|
for i in {1..60}; do
|
||||||
if docker ps --format "{{.Names}}" | grep -q "^gost-mysql$"; then
|
if docker ps --format "{{.Names}}" | grep -q "^$MYSQL_CONTAINER$"; then
|
||||||
DB_HEALTH=$(docker inspect -f '{{.State.Health.Status}}' gost-mysql 2>/dev/null || echo "unknown")
|
DB_HEALTH=$(docker inspect -f '{{.State.Health.Status}}' "$MYSQL_CONTAINER" 2>/dev/null || echo "unknown")
|
||||||
if [[ "$DB_HEALTH" == "healthy" ]]; then
|
if [[ "$DB_HEALTH" == "healthy" ]]; then
|
||||||
echo "✅ 数据库服务健康检查通过"
|
echo "✅ 数据库服务健康检查通过"
|
||||||
break
|
break
|
||||||
@@ -1095,7 +1075,7 @@ EOF
|
|||||||
fi
|
fi
|
||||||
if [ $i -eq 60 ]; then
|
if [ $i -eq 60 ]; then
|
||||||
echo "❌ 数据库服务启动超时(60秒)"
|
echo "❌ 数据库服务启动超时(60秒)"
|
||||||
echo "🔍 当前状态:$(docker inspect -f '{{.State.Health.Status}}' gost-mysql 2>/dev/null || echo '容器不存在')"
|
echo "🔍 当前状态:$(docker inspect -f '{{.State.Health.Status}}' "$MYSQL_CONTAINER" 2>/dev/null || echo '容器不存在')"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
# 每10秒显示一次进度
|
# 每10秒显示一次进度
|
||||||
@@ -1108,8 +1088,8 @@ EOF
|
|||||||
# 检查后端容器健康状态
|
# 检查后端容器健康状态
|
||||||
echo "🔍 检查后端服务状态..."
|
echo "🔍 检查后端服务状态..."
|
||||||
for i in {1..60}; do
|
for i in {1..60}; do
|
||||||
if docker ps --format "{{.Names}}" | grep -q "^springboot-backend$"; then
|
if docker ps --format "{{.Names}}" | grep -q "^$BACKEND_CONTAINER$"; then
|
||||||
BACKEND_HEALTH=$(docker inspect -f '{{.State.Health.Status}}' springboot-backend 2>/dev/null || echo "unknown")
|
BACKEND_HEALTH=$(docker inspect -f '{{.State.Health.Status}}' "$BACKEND_CONTAINER" 2>/dev/null || echo "unknown")
|
||||||
if [[ "$BACKEND_HEALTH" == "healthy" ]]; then
|
if [[ "$BACKEND_HEALTH" == "healthy" ]]; then
|
||||||
echo "✅ 后端服务健康检查通过"
|
echo "✅ 后端服务健康检查通过"
|
||||||
break
|
break
|
||||||
@@ -1125,7 +1105,7 @@ EOF
|
|||||||
fi
|
fi
|
||||||
if [ $i -eq 60 ]; then
|
if [ $i -eq 60 ]; then
|
||||||
echo "❌ 后端服务启动超时(60秒)"
|
echo "❌ 后端服务启动超时(60秒)"
|
||||||
echo "🔍 当前状态:$(docker inspect -f '{{.State.Health.Status}}' springboot-backend 2>/dev/null || echo '容器不存在')"
|
echo "🔍 当前状态:$(docker inspect -f '{{.State.Health.Status}}' "$BACKEND_CONTAINER" 2>/dev/null || echo '容器不存在')"
|
||||||
echo "⚠️ 密码已重置,但服务启动可能有问题,请检查日志"
|
echo "⚠️ 密码已重置,但服务启动可能有问题,请检查日志"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@@ -1138,7 +1118,7 @@ EOF
|
|||||||
|
|
||||||
# 验证数据库连接
|
# 验证数据库连接
|
||||||
echo "🔍 验证数据库连接..."
|
echo "🔍 验证数据库连接..."
|
||||||
if docker exec gost-mysql mysql -u "$DB_USER" -p"$NEW_DB_PASSWORD" -e "SELECT 1;" "$DB_NAME" >/dev/null 2>&1; then
|
if docker exec "$MYSQL_CONTAINER" mysql -u "$DB_USER" -p"$NEW_DB_PASSWORD" -e "SELECT 1;" "$DB_NAME" >/dev/null 2>&1; then
|
||||||
echo "✅ 数据库连接验证成功"
|
echo "✅ 数据库连接验证成功"
|
||||||
else
|
else
|
||||||
echo "⚠️ 数据库连接验证失败,但密码已重置"
|
echo "⚠️ 数据库连接验证失败,但密码已重置"
|
||||||
|
|||||||
Reference in New Issue
Block a user