#!/bin/bash # 数据库初始化脚本 set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # 脚本目录 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" ENV_FILE="$PROJECT_ROOT/.env.local" echo -e "${GREEN}=== Cloudpods 数据库初始化 ===${NC}" echo "" # 加载环境变量 if [ ! -f "$ENV_FILE" ]; then echo -e "${RED}错误: 找不到环境变量文件 $ENV_FILE${NC}" exit 1 fi source "$ENV_FILE" # 检查必要的环境变量 if [ -z "$DB_HOST" ] || [ -z "$DB_PORT" ] || [ -z "$DB_USER" ]; then echo -e "${RED}错误: 数据库配置不完整${NC}" exit 1 fi echo -e "${GREEN}数据库配置:${NC}" echo " Host: $DB_HOST:$DB_PORT" echo " User: $DB_USER" echo " Database: yunioncloud" echo "" # 检查 MySQL 连接 echo -e "${YELLOW}检查数据库连接...${NC}" if [ -z "$DB_PASSWORD" ]; then mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -e "SELECT 1;" > /dev/null 2>&1 else mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASSWORD" -e "SELECT 1;" > /dev/null 2>&1 fi if [ $? -ne 0 ]; then echo -e "${RED}✗ 无法连接到数据库${NC}" echo -e "${YELLOW}请确保:${NC}" echo " 1. MySQL 服务正在运行" echo " 2. .env.local 中的数据库配置正确" echo " 3. 数据库用户有足够的权限" exit 1 fi echo -e "${GREEN}✓ 数据库连接成功${NC}" echo "" # 创建数据库 echo -e "${YELLOW}创建数据库 yunioncloud...${NC}" if [ -z "$DB_PASSWORD" ]; then mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -e "CREATE DATABASE IF NOT EXISTS yunioncloud CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>/dev/null else mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASSWORD" -e "CREATE DATABASE IF NOT EXISTS yunioncloud CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" 2>/dev/null fi if [ $? -eq 0 ]; then echo -e "${GREEN}✓ 数据库创建成功${NC}" else echo -e "${RED}✗ 数据库创建失败${NC}" exit 1 fi echo "" echo -e "${GREEN}=== 数据库初始化完成 ===${NC}" echo "" echo -e "${YELLOW}注意: 服务首次启动时会自动同步数据库表结构${NC}" echo -e "${YELLOW}如果遇到 'database schema not in sync' 错误,${NC}" echo -e "${YELLOW}请在启动命令中添加 --auto-sync-table 参数${NC}"