103 lines
2.7 KiB
Bash
Raw Normal View History

2025-07-11 15:29:39 +08:00
#!/bin/bash
echo "开始初始化旅游内容创作系统数据库..."
# 检查MySQL是否安装
if ! command -v mysql &> /dev/null; then
echo "错误: MySQL未安装请先安装MySQL"
exit 1
fi
# 询问MySQL root密码
read -sp "请输入MySQL root密码如果没有设置请直接回车: " MYSQL_ROOT_PASSWORD
echo ""
# 创建环境变量配置文件
cat > .env.db <<EOF
# 数据库环境变量配置
DB_HOST=localhost
DB_USER=travel_user
DB_PASSWORD=travel123
DB_NAME=travel_content
DB_PORT=3306
EOF
echo "已创建环境变量配置文件 .env.db"
echo "可以通过以下命令加载环境变量:"
echo "source .env.db"
# 自动加载环境变量
source .env.db
echo "已自动加载环境变量"
# 根据是否有密码使用不同的命令执行SQL脚本
echo "执行SQL脚本创建数据库和表..."
if [ -z "$MYSQL_ROOT_PASSWORD" ]; then
# 无密码
mysql -u root <<EOF
-- 创建数据库
CREATE DATABASE IF NOT EXISTS travel_content DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户并授权
CREATE USER IF NOT EXISTS 'travel_user'@'localhost' IDENTIFIED BY 'travel123';
GRANT ALL PRIVILEGES ON travel_content.* TO 'travel_user'@'localhost';
GRANT ALL PRIVILEGES ON travel_content.* TO 'root'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 使用数据库
USE travel_content;
-- 执行完整的SQL脚本
source db/init_database.sql;
EOF
else
# 有密码
mysql -u root -p"$MYSQL_ROOT_PASSWORD" <<EOF
-- 创建数据库
CREATE DATABASE IF NOT EXISTS travel_content DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建用户并授权
CREATE USER IF NOT EXISTS 'travel_user'@'localhost' IDENTIFIED BY 'travel123';
GRANT ALL PRIVILEGES ON travel_content.* TO 'travel_user'@'localhost';
GRANT ALL PRIVILEGES ON travel_content.* TO 'root'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 使用数据库
USE travel_content;
-- 执行完整的SQL脚本
source db/init_database.sql;
EOF
fi
# 检查执行结果
if [ $? -eq 0 ]; then
echo "数据库初始化成功!"
echo "数据库名称: travel_content"
echo "用户: travel_user (密码: travel123)"
# 显示表信息
echo "已创建表:"
mysql -u travel_user -ptravel123 -e "USE travel_content; SHOW TABLES;"
# 更新配置文件
cat > config/database.json <<EOF
{
"host": "\${DB_HOST:-localhost}",
"user": "\${DB_USER:-travel_user}",
"password": "\${DB_PASSWORD:-travel123}",
"database": "\${DB_NAME:-travel_content}",
"port": "\${DB_PORT:-3306}",
"charset": "utf8mb4"
}
EOF
echo "已更新数据库配置文件"
else
echo "数据库初始化失败,请检查错误信息"
fi
echo "初始化完成"