diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 8ddafa6..abea069 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -611,12 +611,11 @@ done # 创建 bugcollect 数据库(独立库,Flyway 自动建表) MYSQL_CTR_INIT="$(docker ps -qf name=mysql | head -1)" -docker exec "$MYSQL_CTR_INIT" mysql -u root -p"${MYSQL_ROOT_PASSWORD}" -e \ - "CREATE DATABASE IF NOT EXISTS xuqm_bugcollect DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>/dev/null \ - && docker exec "$MYSQL_CTR_INIT" mysql -u root -p"${MYSQL_ROOT_PASSWORD}" -e \ - "GRANT ALL PRIVILEGES ON xuqm_bugcollect.* TO '${MYSQL_USERNAME}'@'%'; FLUSH PRIVILEGES;" 2>/dev/null \ +# 用 printf 写 SQL 文件再执行,避免密码含特殊字符(如 @)导致 shell 解析失败 +printf "CREATE DATABASE IF NOT EXISTS xuqm_bugcollect DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\nGRANT ALL PRIVILEGES ON xuqm_bugcollect.* TO '%s'@'%%';\nFLUSH PRIVILEGES;\n" "$MYSQL_USERNAME" \ + | docker exec -i "$MYSQL_CTR_INIT" mysql -u root -p"${MYSQL_ROOT_PASSWORD}" 2>/dev/null \ && ok "xuqm_bugcollect 数据库已创建" \ - || warn "xuqm_bugcollect 数据库创建失败(可能已存在或密码含特殊字符,需手动创建)" + || warn "xuqm_bugcollect 数据库创建失败(可能已存在,需手动创建)" # 等待 Redis 就绪 for i in $(seq 1 10); do