- 新增PostgreSQL数据库支持,包含内置和外部数据库两种部署模式 - 实现机台管理功能,包括保护状态控制和VHD关键词设置 - 添加用户认证系统,支持会话管理和权限控制 - 更新Docker配置,支持数据库持久化和健康检查 - 扩展API接口,提供完整的RESTful API文档 - 更新客户端代码以支持机台ID和保护检查功能 - 添加数据库初始化脚本和配置指南
213 lines
4.5 KiB
Markdown
213 lines
4.5 KiB
Markdown
# PostgreSQL安装和配置指南
|
||
|
||
## 📋 概述
|
||
|
||
本指南将帮助你在Windows系统上安装和配置PostgreSQL数据库,以支持VHDSelectServer的数据持久化功能。
|
||
|
||
## 🔧 安装PostgreSQL
|
||
|
||
### 方法一:官方安装程序(推荐)
|
||
|
||
1. **下载PostgreSQL**
|
||
- 访问:https://www.postgresql.org/download/windows/
|
||
- 点击"Download the installer"
|
||
- 选择最新版本(推荐PostgreSQL 15或16)
|
||
|
||
2. **运行安装程序**
|
||
- 以管理员身份运行下载的安装程序
|
||
- 按照以下设置进行安装:
|
||
|
||
```
|
||
安装组件:
|
||
✅ PostgreSQL Server
|
||
✅ pgAdmin 4
|
||
✅ Stack Builder
|
||
✅ Command Line Tools
|
||
|
||
安装目录:C:\Program Files\PostgreSQL\16 (默认)
|
||
数据目录:C:\Program Files\PostgreSQL\16\data (默认)
|
||
|
||
超级用户密码:password
|
||
端口:5432
|
||
区域设置:[Default locale]
|
||
```
|
||
|
||
3. **完成安装**
|
||
- 安装完成后,确保PostgreSQL服务已启动
|
||
- 可以在"服务"中查看"postgresql-x64-16"服务状态
|
||
|
||
### 方法二:使用包管理器
|
||
|
||
如果你使用Chocolatey:
|
||
```bash
|
||
choco install postgresql
|
||
```
|
||
|
||
如果你使用Scoop:
|
||
```bash
|
||
scoop install postgresql
|
||
```
|
||
|
||
## 🗄️ 配置数据库
|
||
|
||
### 自动配置(推荐)
|
||
|
||
1. **运行配置脚本**
|
||
```bash
|
||
cd VHDSelectServer
|
||
setup_database.bat
|
||
```
|
||
|
||
2. **输入密码**
|
||
- 脚本会提示输入PostgreSQL超级用户密码
|
||
- 输入安装时设置的密码(默认:password)
|
||
|
||
### 手动配置
|
||
|
||
如果自动配置失败,可以手动执行以下步骤:
|
||
|
||
1. **打开命令提示符**
|
||
```bash
|
||
# 设置PostgreSQL环境变量(如果需要)
|
||
set PATH=%PATH%;C:\Program Files\PostgreSQL\16\bin
|
||
```
|
||
|
||
2. **连接到PostgreSQL**
|
||
```bash
|
||
psql -U postgres -h localhost
|
||
```
|
||
|
||
3. **执行配置脚本**
|
||
```sql
|
||
\i setup_postgresql.sql
|
||
```
|
||
|
||
## 🔍 验证安装
|
||
|
||
### 检查PostgreSQL服务
|
||
|
||
1. **检查服务状态**
|
||
```bash
|
||
sc query postgresql-x64-16
|
||
```
|
||
|
||
2. **启动服务(如果未运行)**
|
||
```bash
|
||
net start postgresql-x64-16
|
||
```
|
||
|
||
### 测试数据库连接
|
||
|
||
1. **使用psql连接**
|
||
```bash
|
||
psql -U postgres -h localhost -d vhd_select
|
||
```
|
||
|
||
2. **查看表结构**
|
||
```sql
|
||
\dt
|
||
SELECT * FROM machines;
|
||
```
|
||
|
||
### 测试VHDSelectServer连接
|
||
|
||
1. **更新.env文件**
|
||
确保`.env`文件中的配置正确:
|
||
```env
|
||
DB_HOST=localhost
|
||
DB_PORT=5432
|
||
DB_NAME=vhd_select
|
||
DB_USER=postgres
|
||
DB_PASSWORD=password
|
||
```
|
||
|
||
2. **重启VHDSelectServer**
|
||
```bash
|
||
node server.js
|
||
```
|
||
|
||
3. **检查连接状态**
|
||
- 查看控制台输出,应该显示"数据库连接成功"
|
||
- 访问Web UI:http://localhost:8080
|
||
|
||
## 🛠️ 故障排除
|
||
|
||
### 常见问题
|
||
|
||
1. **"psql不是内部或外部命令"**
|
||
- 解决方案:将PostgreSQL的bin目录添加到系统PATH环境变量
|
||
- 路径:`C:\Program Files\PostgreSQL\16\bin`
|
||
|
||
2. **连接被拒绝**
|
||
- 检查PostgreSQL服务是否运行
|
||
- 检查防火墙设置
|
||
- 确认端口5432未被占用
|
||
|
||
3. **密码认证失败**
|
||
- 确认超级用户密码正确
|
||
- 检查pg_hba.conf配置文件
|
||
|
||
4. **数据库不存在**
|
||
- 重新运行setup_postgresql.sql脚本
|
||
- 手动创建数据库:`CREATE DATABASE vhd_select;`
|
||
|
||
### 重置数据库
|
||
|
||
如果需要重置数据库:
|
||
|
||
```sql
|
||
-- 连接到postgres数据库
|
||
\c postgres
|
||
|
||
-- 删除现有数据库
|
||
DROP DATABASE IF EXISTS vhd_select;
|
||
|
||
-- 重新运行配置脚本
|
||
\i setup_postgresql.sql
|
||
```
|
||
|
||
## 📊 数据库结构
|
||
|
||
### machines表结构
|
||
|
||
| 字段名 | 类型 | 说明 |
|
||
|--------|------|------|
|
||
| id | SERIAL | 主键,自增ID |
|
||
| machine_id | VARCHAR(255) | 机台唯一标识符 |
|
||
| protected | BOOLEAN | 保护状态 |
|
||
| vhd_keyword | VARCHAR(50) | VHD关键词 |
|
||
| created_at | TIMESTAMP | 创建时间 |
|
||
| updated_at | TIMESTAMP | 更新时间 |
|
||
|
||
### 索引
|
||
|
||
- `idx_machines_machine_id`: machine_id字段索引
|
||
- `idx_machines_protected`: protected字段索引
|
||
|
||
## 🔐 安全建议
|
||
|
||
1. **修改默认密码**
|
||
- 生产环境中应修改默认的postgres用户密码
|
||
|
||
2. **创建专用用户**
|
||
```sql
|
||
CREATE USER vhd_user WITH PASSWORD 'secure_password';
|
||
GRANT ALL PRIVILEGES ON DATABASE vhd_select TO vhd_user;
|
||
```
|
||
|
||
3. **配置防火墙**
|
||
- 限制PostgreSQL端口的访问权限
|
||
|
||
4. **定期备份**
|
||
```bash
|
||
pg_dump -U postgres vhd_select > backup.sql
|
||
```
|
||
|
||
## 📞 获取帮助
|
||
|
||
如果遇到问题,可以:
|
||
|
||
1. 查看PostgreSQL日志文件
|
||
2. 检查VHDSelectServer控制台输出
|
||
3. 使用pgAdmin 4图形界面管理数据库
|
||
4. 参考PostgreSQL官方文档:https://www.postgresql.org/docs/ |