#!/bin/bash # 数据库初始化脚本 echo "==========================================" echo "数据库初始化脚本" echo "==========================================" echo "" # gangyan:Docker 将 MySQL 映到宿主机 33306(见 mysql/docker-compose.yml),勿用 3306 检测/连接 MYSQL_HOST=127.0.0.1 MYSQL_PORT=33306 if ! ss -tln 2>/dev/null | grep -qE ":${MYSQL_PORT}\b"; then echo "❌ 未监听 ${MYSQL_HOST}:${MYSQL_PORT}(请先启动 gangyan/mysql Docker Compose)" exit 1 fi echo "请输入MySQL root密码(默认: 1234567890):" read -s MYSQL_PASSWORD MYSQL_PASSWORD=${MYSQL_PASSWORD:-1234567890} echo "" echo "正在测试MySQL连接(${MYSQL_HOST}:${MYSQL_PORT})..." mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -uroot -p"$MYSQL_PASSWORD" -e "SELECT 1;" 2>/dev/null if [ $? -ne 0 ]; then echo "❌ MySQL连接失败,请检查:" echo " 1. MySQL服务是否运行" echo " 2. root密码是否正确" echo " 3. 是否有MySQL客户端工具" echo "" echo "如果没有mysql客户端,可以安装:" echo " sudo apt install mysql-client-core-8.0" exit 1 fi echo "✅ MySQL连接成功" echo "" # 创建数据库 DB_NAME="chat_gpt_yj" echo "正在创建数据库: $DB_NAME" mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -uroot -p"$MYSQL_PASSWORD" -e "CREATE DATABASE IF NOT EXISTS \`$DB_NAME\` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;" 2>/dev/null if [ $? -eq 0 ]; then echo "✅ 数据库创建成功" else echo "❌ 数据库创建失败" exit 1 fi echo "" echo "正在导入SQL脚本..." SQL_DIR="$(dirname "$0")/doc/sql" # 导入顺序很重要 SQL_FILES=( "sys.sql" "chat_gpt.sql" "knowledge_base.sql" "gpt_folder.sql" "writter_docs.sql" "quartz.sql" ) for sql_file in "${SQL_FILES[@]}"; do if [ -f "$SQL_DIR/$sql_file" ]; then echo " 导入: $sql_file" mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -uroot -p"$MYSQL_PASSWORD" "$DB_NAME" < "$SQL_DIR/$sql_file" 2>/dev/null if [ $? -eq 0 ]; then echo " ✅ 成功" else echo " ⚠️ 警告: 导入可能有问题,但继续..." fi else echo " ⚠️ 文件不存在: $sql_file" fi done echo "" echo "==========================================" echo "数据库初始化完成!" echo "==========================================" echo "" echo "数据库名: $DB_NAME" echo "用户名: root" echo "" echo "现在可以启动 Java 后端(profile=yj,连 Docker 宿主端口 33306):" echo " 推荐使用 gangyan/scripts/backend-restart.sh" echo " 或: java -jar target/chat_web_yj.jar -Dspring.profiles.active=yj \\" echo " -Dspring.config.additional-location=file:/path/to/gangyan/backend/application-local.yml"