init-database.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #!/bin/bash
  2. # 数据库初始化脚本
  3. set -e
  4. # 颜色定义
  5. RED='\033[0;31m'
  6. GREEN='\033[0;32m'
  7. YELLOW='\033[1;33m'
  8. NC='\033[0m'
  9. # 脚本目录
  10. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  11. PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
  12. ENV_FILE="$PROJECT_ROOT/.env.local"
  13. echo -e "${GREEN}=== Cloudpods 数据库初始化 ===${NC}"
  14. echo ""
  15. # 加载环境变量
  16. if [ ! -f "$ENV_FILE" ]; then
  17. echo -e "${RED}错误: 找不到环境变量文件 $ENV_FILE${NC}"
  18. exit 1
  19. fi
  20. source "$ENV_FILE"
  21. # 检查必要的环境变量
  22. if [ -z "$DB_HOST" ] || [ -z "$DB_PORT" ] || [ -z "$DB_USER" ]; then
  23. echo -e "${RED}错误: 数据库配置不完整${NC}"
  24. exit 1
  25. fi
  26. echo -e "${GREEN}数据库配置:${NC}"
  27. echo " Host: $DB_HOST:$DB_PORT"
  28. echo " User: $DB_USER"
  29. echo " Database: yunioncloud"
  30. echo ""
  31. # 检查 MySQL 连接
  32. echo -e "${YELLOW}检查数据库连接...${NC}"
  33. if [ -z "$DB_PASSWORD" ]; then
  34. mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -e "SELECT 1;" > /dev/null 2>&1
  35. else
  36. mysql -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASSWORD" -e "SELECT 1;" > /dev/null 2>&1
  37. fi
  38. if [ $? -ne 0 ]; then
  39. echo -e "${RED}✗ 无法连接到数据库${NC}"
  40. echo -e "${YELLOW}请确保:${NC}"
  41. echo " 1. MySQL 服务正在运行"
  42. echo " 2. .env.local 中的数据库配置正确"
  43. echo " 3. 数据库用户有足够的权限"
  44. exit 1
  45. fi
  46. echo -e "${GREEN}✓ 数据库连接成功${NC}"
  47. echo ""
  48. # 创建数据库
  49. echo -e "${YELLOW}创建数据库 yunioncloud...${NC}"
  50. if [ -z "$DB_PASSWORD" ]; then
  51. 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
  52. else
  53. 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
  54. fi
  55. if [ $? -eq 0 ]; then
  56. echo -e "${GREEN}✓ 数据库创建成功${NC}"
  57. else
  58. echo -e "${RED}✗ 数据库创建失败${NC}"
  59. exit 1
  60. fi
  61. echo ""
  62. echo -e "${GREEN}=== 数据库初始化完成 ===${NC}"
  63. echo ""
  64. echo -e "${YELLOW}注意: 服务首次启动时会自动同步数据库表结构${NC}"
  65. echo -e "${YELLOW}如果遇到 'database schema not in sync' 错误,${NC}"
  66. echo -e "${YELLOW}请在启动命令中添加 --auto-sync-table 参数${NC}"