142 lines
4.2 KiB
Bash
142 lines
4.2 KiB
Bash
|
|
#!/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 ""
|