优化linux建表,初始化整体业务

This commit is contained in:
2026-03-17 09:52:54 +08:00
parent fee6c67d51
commit 8acb8a3d2a
3 changed files with 150 additions and 39 deletions

View File

@@ -102,47 +102,22 @@ else
error "Redis 连接失败,请检查地址、端口和密码"
fi
# ------ 4. 初始化 MySQL 数据库 ------
# ------ 4. 验证 MySQL 数据库 ------
echo ""
echo "--- 初始化 MySQL 数据库 ---"
echo "--- 验证 MySQL 数据库 ---"
if $MYSQL_CMD -e "USE ${DB_NAME}" >/dev/null 2>&1; then
# 数据库已存在,检查是否需要加微信字段
HAS_WX=$($MYSQL_CMD -N -e "SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='${DB_NAME}' AND TABLE_NAME='users' AND COLUMN_NAME='wx_openid'" 2>/dev/null)
if [ "$HAS_WX" = "0" ]; then
warn "数据库已存在,正在添加微信登录字段..."
$MYSQL_CMD ${DB_NAME} -e "
ALTER TABLE users ADD COLUMN wx_openid VARCHAR(64) UNIQUE AFTER hashed_password;
ALTER TABLE users ADD COLUMN wx_nickname VARCHAR(100) AFTER wx_openid;
ALTER TABLE users ADD COLUMN wx_avatar VARCHAR(500) AFTER wx_nickname;
ALTER TABLE users MODIFY COLUMN email VARCHAR(255) NULL;
ALTER TABLE users MODIFY COLUMN hashed_password VARCHAR(255) NULL;
" 2>/dev/null || true
info "微信字段已添加"
else
info "数据库 ${DB_NAME} 已存在且结构完整"
fi
else
info "正在创建数据库和表..."
$MYSQL_CMD < "${PROJECT_DIR}/init-db.sql"
info "数据库 ${DB_NAME} 创建完成"
if ! $MYSQL_CMD -e "USE ${DB_NAME}" >/dev/null 2>&1; then
error "数据库 ${DB_NAME} 不存在,请先运行: ./init_mysql.sh"
fi
# 创建测试用户(如果 users 表为空)
USER_COUNT=$($MYSQL_CMD -N -e "SELECT COUNT(*) FROM ${DB_NAME}.users" 2>/dev/null)
if [ "$USER_COUNT" = "0" ]; then
info "正在创建测试用户..."
# 用 python 生成 bcrypt 密码
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()))")
$MYSQL_CMD ${DB_NAME} -e "
INSERT INTO users (id, username, email, hashed_password, is_active)
VALUES ('${USER_ID}', 'admin', 'admin@example.com', '${HASHED_PW}', 1);
"
info "测试用户: admin / Admin123!"
TABLE_COUNT=$($MYSQL_CMD -N -e "SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA='${DB_NAME}'" 2>/dev/null)
if [ "$TABLE_COUNT" -lt 1 ] 2>/dev/null; then
error "数据库 ${DB_NAME} 中没有表,请先运行: ./init_mysql.sh"
fi
info "数据库 ${DB_NAME} 验证通过(${TABLE_COUNT} 张表)"
# ------ 5. 构建 Redis URL ------
if [ -n "$REDIS_PASSWORD" ]; then
@@ -237,9 +212,10 @@ echo "========================================"
echo " 安装完成!"
echo "========================================"
echo ""
echo " MySQL: ${MYSQL_HOST}:${MYSQL_PORT} / ${DB_NAME}"
echo " MySQL: ${MYSQL_HOST}:${MYSQL_PORT} / ${DB_NAME} (用户: ${MYSQL_USER})"
echo " Redis: ${REDIS_HOST}:${REDIS_PORT}"
echo ""
echo " 首次部署请先运行: ./init_mysql.sh (root 建库建表)"
echo " 启动服务: ./start_linux.sh"
echo " 停止服务: ./stop_linux.sh"
echo ""