Files
weibo_signin/init_mysql.sh
Jeason e514a11e62 注册码 + 管理员系统:
User 模型新增 is_admin 字段
新增 InviteCode 模型(邀请码表)
注册接口必须提供有效邀请码,使用后自动标记
管理员接口:查看所有用户、启用/禁用用户、生成/删除邀请码
前端新增管理面板页面 /admin,导航栏对管理员显示入口
注册页面新增邀请码输入框
选择性超话签到:

新增 GET /api/v1/accounts/{id}/topics 接口获取超话列表
POST /signin 接口支持 {"topic_indices": [0,1,3]} 选择性签到
新增超话选择页面 /accounts/{id}/topics,支持全选/手动勾选
账号详情页新增"选择超话签到"按钮
2026-03-17 17:05:28 +08:00

138 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
set -e
# ============================================================
# Weibo-HotSign MySQL 初始化脚本(需要 root 权限)
# 用途: 建库、建表、创建业务用户并授权
# 使用方式: chmod +x init_mysql.sh && ./init_mysql.sh
# 只需运行一次,后续用 setup_linux.sh 做业务配置
# ============================================================
# ===================== 请在此处填写配置 =====================
MYSQL_ROOT_PASSWORD="" # ← 填写 MySQL root 密码
# 业务用户配置setup_linux.sh 中要保持一致)
BIZ_USER="weibo"
BIZ_PASSWORD="123456" # ← 填写业务用户密码
BIZ_HOST="%" # 允许连接的来源,% 表示任意
MYSQL_HOST="127.0.0.1"
MYSQL_PORT="3306"
DB_NAME="weibo_hotsign"
# ===================== 配置结束 =====================
PROJECT_DIR="$(cd "$(dirname "$0")" && pwd)"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
info() { echo -e "${GREEN}[✓]${NC} $1"; }
warn() { echo -e "${YELLOW}[!]${NC} $1"; }
error() { echo -e "${RED}[✗]${NC} $1"; exit 1; }
echo ""
echo "========================================"
echo " Weibo-HotSign MySQL 初始化root"
echo "========================================"
echo ""
# 检查 mysql 客户端
command -v mysql >/dev/null 2>&1 || error "未找到 mysql 客户端"
# 构建 root 连接命令
ROOT_CMD="mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -uroot"
if [ -n "$MYSQL_ROOT_PASSWORD" ]; then
ROOT_CMD="$ROOT_CMD -p${MYSQL_ROOT_PASSWORD}"
fi
# 测试 root 连接
if $ROOT_CMD -e "SELECT 1" >/dev/null 2>&1; then
info "MySQL root 连接成功"
else
error "MySQL root 连接失败,请检查 root 密码"
fi
# ------ 1. 创建数据库 ------
echo ""
echo "--- 创建数据库 ---"
$ROOT_CMD -e "CREATE DATABASE IF NOT EXISTS ${DB_NAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
info "数据库 ${DB_NAME} 已创建"
# ------ 2. 创建业务用户并授权 ------
echo ""
echo "--- 创建业务用户 ---"
# 创建用户(如果已存在则忽略)
$ROOT_CMD -e "CREATE USER IF NOT EXISTS '${BIZ_USER}'@'${BIZ_HOST}' IDENTIFIED BY '${BIZ_PASSWORD}';" 2>/dev/null || true
# 授权
$ROOT_CMD -e "GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${BIZ_USER}'@'${BIZ_HOST}';"
$ROOT_CMD -e "FLUSH PRIVILEGES;"
info "用户 ${BIZ_USER} 已创建并授权 ${DB_NAME}"
# ------ 3. 建表 ------
echo ""
echo "--- 创建表结构 ---"
$ROOT_CMD ${DB_NAME} < "${PROJECT_DIR}/init-db.sql"
info "所有表创建完成"
# ------ 4. 创建测试用户(可选) ------
echo ""
echo "--- 检查测试用户 ---"
USER_COUNT=$($ROOT_CMD -N -e "SELECT COUNT(*) FROM ${DB_NAME}.users" 2>/dev/null)
if [ "$USER_COUNT" = "0" ]; then
# 检查 bcrypt 是否可用
if python3 -c "import bcrypt" 2>/dev/null; then
HASHED_PW=$(python3 -c "import bcrypt; print(bcrypt.hashpw(b'Admin123', bcrypt.gensalt(12)).decode())")
USER_ID=$(python3 -c "import uuid; print(str(uuid.uuid4()))")
$ROOT_CMD ${DB_NAME} -e "
INSERT INTO users (id, username, email, hashed_password, is_admin, is_active)
VALUES ('${USER_ID}', 'admin', 'admin@example.com', '${HASHED_PW}', 1, 1);
"
info "管理员用户已创建: admin@example.com / Admin123 (管理员)"
else
warn "bcrypt 未安装,跳过管理员创建(运行 setup_linux.sh 安装依赖后可手动创建)"
fi
else
info "已有 ${USER_COUNT} 个用户,跳过"
fi
# ------ 5. 验证 ------
echo ""
echo "--- 验证业务用户权限 ---"
BIZ_CMD="mysql -h${MYSQL_HOST} -P${MYSQL_PORT} -u${BIZ_USER}"
if [ -n "$BIZ_PASSWORD" ]; then
BIZ_CMD="$BIZ_CMD -p${BIZ_PASSWORD}"
fi
TABLE_COUNT=$($BIZ_CMD -N -e "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DB_NAME}'" 2>/dev/null)
if [ "$TABLE_COUNT" -gt 0 ] 2>/dev/null; then
info "业务用户 ${BIZ_USER} 可正常访问 ${DB_NAME}${TABLE_COUNT} 张表)"
else
error "业务用户权限验证失败"
fi
echo ""
echo "========================================"
echo " MySQL 初始化完成"
echo "========================================"
echo ""
echo " 数据库: ${DB_NAME}"
echo " 业务用户: ${BIZ_USER}"
echo " 表数量: ${TABLE_COUNT}"
echo ""
echo " 下一步: ./setup_linux.sh"
echo ""