优化linux建表,初始化整体业务
This commit is contained in:
@@ -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 ""
|
||||
|
||||
Reference in New Issue
Block a user