103 lines
2.7 KiB
Bash
Executable File
103 lines
2.7 KiB
Bash
Executable File
#!/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 "初始化完成" |