156 lines
4.4 KiB
Bash
Executable File
156 lines
4.4 KiB
Bash
Executable File
#!/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 ""
|
||
|