xiaso-flnxi-website/setup-existing-postgres.sh
Your Name b1eab32c75 初始提交: FLNXI电商素材系统官方网站
- Next.js 项目框架
- 完整的认证系统集成
- 数据库配置和部署脚本
- 产品价格体系和文档
- Docker 部署配置
2025-12-13 21:38:32 +08:00

156 lines
4.4 KiB
Bash
Executable File
Raw 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
# 使用现有PostgreSQL配置数据库
set -e
echo "🚀 配置现有 PostgreSQL 数据库..."
echo ""
SERVER="root@45.249.208.118"
SERVER_PASSWORD="lxvhNYFZ4160"
DB_NAME="flnxi_db"
DB_USER="flnxi_user"
DB_PASSWORD="Flnxi@2025!SecurePassword"
GREEN='\033[0;32m'
BLUE='\033[0;34m'
YELLOW='\033[1;33m'
NC='\033[0m'
ssh_exec() {
sshpass -p "$SERVER_PASSWORD" ssh -o StrictHostKeyChecking=no $SERVER "$1"
}
echo -e "${BLUE}步骤 1/6: 创建数据库用户...${NC}"
ssh_exec "sudo -u postgres psql -c \"CREATE USER $DB_USER WITH PASSWORD '$DB_PASSWORD';\" 2>/dev/null || echo '用户可能已存在'"
echo -e "${GREEN}✅ 用户已创建/存在${NC}"
echo ""
echo -e "${BLUE}步骤 2/6: 创建数据库...${NC}"
ssh_exec "sudo -u postgres psql -c \"CREATE DATABASE $DB_NAME OWNER $DB_USER;\" 2>/dev/null || echo '数据库可能已存在'"
ssh_exec "sudo -u postgres psql -c \"GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;\""
echo -e "${GREEN}✅ 数据库已创建${NC}"
echo ""
echo -e "${BLUE}步骤 3/6: 创建用户表...${NC}"
ssh_exec "sudo -u postgres psql -d $DB_NAME << 'EOFSQL'
-- 创建用户表
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
email_verified BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- 创建索引
CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
CREATE INDEX IF NOT EXISTS idx_users_created_at ON users(created_at);
-- 授权
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO $DB_USER;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO $DB_USER;
-- 查看表结构
\d users
EOFSQL
"
echo -e "${GREEN}✅ 用户表已创建${NC}"
echo ""
echo -e "${BLUE}步骤 4/6: 配置环境变量...${NC}"
DATABASE_URL="postgresql://${DB_USER}:${DB_PASSWORD}@localhost:5432/${DB_NAME}?schema=public"
ssh_exec "cd /opt/flnxi-website && cat >> .env.local << EOFENV
# PostgreSQL 数据库配置
DATABASE_URL=\"${DATABASE_URL}\"
EOFENV
"
echo -e "${GREEN}✅ 环境变量已配置${NC}"
echo ""
echo -e "${BLUE}步骤 5/6: 测试数据库连接...${NC}"
ssh_exec "sudo -u postgres psql -d $DB_NAME -c 'SELECT current_database(), current_user;'"
echo -e "${GREEN}✅ 数据库连接正常${NC}"
echo ""
echo -e "${BLUE}步骤 6/6: 清理Docker容器...${NC}"
ssh_exec "cd /opt/flnxi-website && docker-compose -f docker-compose-db.yml down 2>/dev/null || true"
ssh_exec "docker rm -f flnxi-postgres 2>/dev/null || true"
echo -e "${GREEN}✅ 已清理${NC}"
echo ""
# 保存配置信息
cat > DATABASE_CONFIG.md << EOFCONFIG
# PostgreSQL 数据库配置信息
## 连接信息
- **数据库名**: \`$DB_NAME\`
- **用户名**: \`$DB_USER\`
- **密码**: \`$DB_PASSWORD\`
- **端口**: \`5432\` (本地)
- **连接字符串**:
\`\`\`
$DATABASE_URL
\`\`\`
## 管理命令
### 连接数据库
\`\`\`bash
ssh root@45.249.208.118
sudo -u postgres psql -d $DB_NAME
\`\`\`
### 查看表
\`\`\`sql
\dt
\`\`\`
### 查看用户数据
\`\`\`sql
SELECT id, name, email, email_verified, created_at FROM users;
\`\`\`
### 备份数据库
\`\`\`bash
sudo -u postgres pg_dump $DB_NAME > backup_\$(date +%Y%m%d).sql
\`\`\`
## 表结构
### users 表
| 字段 | 类型 | 说明 |
|------|------|------|
| id | SERIAL | 主键 |
| name | VARCHAR(255) | 用户名 |
| email | VARCHAR(255) | 邮箱(唯一) |
| password | VARCHAR(255) | 密码(bcrypt加密) |
| email_verified | BOOLEAN | 邮箱是否验证 |
| created_at | TIMESTAMP | 创建时间 |
| updated_at | TIMESTAMP | 更新时间 |
---
生成时间: $(date)
EOFCONFIG
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo -e "${GREEN}🎉 PostgreSQL 配置完成!${NC}"
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo ""
echo -e "${YELLOW}📊 数据库信息:${NC}"
echo "数据库名: $DB_NAME"
echo "用户名: $DB_USER"
echo "密码: $DB_PASSWORD"
echo "连接: localhost:5432"
echo ""
echo -e "${YELLOW}📝 配置已保存到: DATABASE_CONFIG.md${NC}"
echo ""
echo -e "${YELLOW}🔍 测试连接:${NC}"
echo "sshpass -p '$SERVER_PASSWORD' ssh $SERVER 'sudo -u postgres psql -d $DB_NAME -c \"SELECT * FROM users;\"'"
echo ""