Files
AIGC/demo/database_baota_deploy/deploy_database.sh
2025-11-13 17:01:39 +08:00

142 lines
4.2 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 宝塔数据库快速部署脚本
# 使用方法bash deploy_database.sh
echo "========================================"
echo " AIGC平台 - 宝塔数据库部署脚本"
echo "========================================"
echo ""
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 数据库配置
DB_NAME="aigc_platform"
DB_USER="aigc_platform"
DB_CHARSET="utf8mb4"
DB_COLLATE="utf8mb4_unicode_ci"
# 检查是否为root用户
if [ "$EUID" -ne 0 ]; then
echo -e "${RED}请使用root权限运行此脚本${NC}"
echo "使用方法: sudo bash deploy_database.sh"
exit 1
fi
echo "步骤 1/5: 检查MySQL服务状态..."
if systemctl is-active --quiet mysql || systemctl is-active --quiet mysqld || systemctl is-active --quiet mariadb; then
echo -e "${GREEN}✓ MySQL服务正在运行${NC}"
else
echo -e "${RED}✗ MySQL服务未运行${NC}"
echo "正在启动MySQL服务..."
systemctl start mysql || systemctl start mysqld || systemctl start mariadb
sleep 2
fi
echo ""
echo "步骤 2/5: 输入MySQL root密码"
read -sp "请输入MySQL root密码: " MYSQL_ROOT_PASSWORD
echo ""
echo ""
# 测试MySQL连接
echo "测试MySQL连接..."
mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e "SELECT 1;" > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "${RED}✗ MySQL连接失败请检查root密码${NC}"
exit 1
fi
echo -e "${GREEN}✓ MySQL连接成功${NC}"
echo ""
echo "步骤 3/5: 创建数据库和用户"
read -sp "请输入新数据库用户的密码(按回车使用随机密码): " DB_PASSWORD
echo ""
if [ -z "$DB_PASSWORD" ]; then
# 生成随机密码
DB_PASSWORD=$(openssl rand -base64 16)
echo -e "${YELLOW}已生成随机密码: $DB_PASSWORD${NC}"
echo -e "${YELLOW}请务必保存此密码!${NC}"
fi
echo ""
# 创建数据库
mysql -uroot -p"$MYSQL_ROOT_PASSWORD" <<EOF
-- 删除旧数据库(如果存在)
DROP DATABASE IF EXISTS \`$DB_NAME\`;
-- 创建新数据库
CREATE DATABASE \`$DB_NAME\` DEFAULT CHARACTER SET $DB_CHARSET COLLATE $DB_COLLATE;
-- 创建用户(如果不存在)
CREATE USER IF NOT EXISTS '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASSWORD';
CREATE USER IF NOT EXISTS '$DB_USER'@'%' IDENTIFIED BY '$DB_PASSWORD';
-- 授权
GRANT ALL PRIVILEGES ON \`$DB_NAME\`.* TO '$DB_USER'@'localhost';
GRANT ALL PRIVILEGES ON \`$DB_NAME\`.* TO '$DB_USER'@'%';
-- 刷新权限
FLUSH PRIVILEGES;
EOF
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ 数据库和用户创建成功${NC}"
else
echo -e "${RED}✗ 数据库创建失败${NC}"
exit 1
fi
echo ""
echo "步骤 4/5: 导入数据库结构"
if [ -f "init_database.sql" ]; then
mysql -u"$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" < init_database.sql
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ 数据库结构导入成功${NC}"
else
echo -e "${RED}✗ 数据库结构导入失败${NC}"
exit 1
fi
else
echo -e "${RED}✗ 找不到 init_database.sql 文件${NC}"
exit 1
fi
echo ""
echo "步骤 5/5: 验证数据库"
TABLE_COUNT=$(mysql -u"$DB_USER" -p"$DB_PASSWORD" "$DB_NAME" -sN -e "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '$DB_NAME';")
echo "已创建 $TABLE_COUNT 个数据表"
if [ "$TABLE_COUNT" -ge 13 ]; then
echo -e "${GREEN}✓ 数据库部署成功!${NC}"
else
echo -e "${YELLOW}⚠ 表数量少于预期预期13个实际$TABLE_COUNT个${NC}"
fi
echo ""
echo "========================================"
echo " 部署完成!"
echo "========================================"
echo ""
echo "数据库信息:"
echo "----------------------------------------"
echo "数据库名: $DB_NAME"
echo "用户名: $DB_USER"
echo "密码: $DB_PASSWORD"
echo "字符集: $DB_CHARSET"
echo "排序规则: $DB_COLLATE"
echo "----------------------------------------"
echo ""
echo "请将以下配置添加到 application-prod.properties"
echo ""
echo "spring.datasource.url=jdbc:mysql://localhost:3306/$DB_NAME?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai"
echo "spring.datasource.username=$DB_USER"
echo "spring.datasource.password=$DB_PASSWORD"
echo ""
echo -e "${YELLOW}请务必保存数据库密码!${NC}"
echo ""