Files
AIGC/demo/database_baota_deploy/deploy_database.sh

142 lines
4.2 KiB
Bash
Raw Permalink Normal View History

2025-11-13 17:01:39 +08:00
#!/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 ""