PostgreSQL 数据库初始化指南
适用场景:使用外部 PostgreSQL 数据库而非 Docker 内嵌数据库时,需提前手动创建数据库和用户。
步骤 1:创建用户和数据库
以 PostgreSQL 管理员(postgres)身份登录 psql:
bash
sudo -u postgres psql查询现有数据库和用户
psql 中执行:
sql
-- 查看所有数据库
\l
-- 查看所有用户
\du输入 \q 退出 psql。
创建用户和数据库
执行以下 SQL(每条语句必须以 ; 结尾):
sql
-- 创建应用用户
CREATE USER ssh_upgrade WITH PASSWORD 'your_password';
-- 创建数据库并指定所有者
CREATE DATABASE ssh_upgrade OWNER ssh_upgrade;
-- 授予数据库权限
GRANT ALL PRIVILEGES ON DATABASE ssh_upgrade TO ssh_upgrade;继续在同一个 psql 会话中执行下一步授予 schema 权限。
步骤 2:授予 schema 权限
⚠️ 注意:PostgreSQL 15+ 移除了
publicschema 对普通用户的默认CREATE权限,必须由 PostgreSQL 管理员(superuser)显式授予。此步骤直接在步骤 1 的 psql 会话中执行即可,不要断开重连。
sql
-- 授予 public schema 的使用和创建权限
GRANT USAGE, CREATE ON SCHEMA public TO ssh_upgrade;
-- 为 ssh_upgrade 用户创建的后续对象设置默认权限
ALTER DEFAULT PRIVILEGES FOR ROLE ssh_upgrade IN SCHEMA public
GRANT ALL ON TABLES TO ssh_upgrade;
ALTER DEFAULT PRIVILEGES FOR ROLE ssh_upgrade IN SCHEMA public
GRANT ALL ON SEQUENCES TO ssh_upgrade;输入 \q 退出 psql。
连接参数
创建完成后,将以下参数填入服务端部署的环境变量中:
方式一:env.sh / .env 配置文件
bash
export DB_DRIVER=postgres
export DB_HOST=127.0.0.1 # 改为实际数据库地址
export DB_PORT=5432
export DB_USER=ssh_upgrade
export DB_PASSWORD=your_password # 改为实际密码
export DB_NAME=ssh_upgrade
export DB_SSLMODE=disable # 生产环境建议 enable方式二:docker-compose.yml 环境变量
yaml
environment:
- DB_DRIVER=postgres
- DB_HOST=127.0.0.1 # 改为实际数据库地址
- DB_PORT=5432
- DB_USER=ssh_upgrade
- DB_PASSWORD=your_password # 改为实际密码
- DB_NAME=ssh_upgrade
- DB_SSLMODE=disable # 生产环境建议 enablePostgreSQL 连接默认使用
UTF8编码,已在 DSN 中自动配置client_encoding=UTF8,无需手动设置。
快速验证连接
bash
psql -h 127.0.0.1 -p 5432 -U ssh_upgrade -d ssh_upgrade -c "SELECT 1"输入密码后返回 1 即表示连接正常。
安全建议
限制 IP 访问
编辑 pg_hba.conf 文件(通常在 /etc/postgresql/*/main/pg_hba.conf),限制允许连接的主机:
# 仅允许 192.168.1.x 网段
host ssh_upgrade ssh_upgrade 192.168.1.0/24 scram-sha-256
# 仅允许本机
host ssh_upgrade ssh_upgrade 127.0.0.1/32 scram-sha-256修改后重启 PostgreSQL:
bash
sudo systemctl restart postgresql强密码
密码建议 16 位以上,包含大小写字母、数字和特殊字符。
首次启动提示
数据库创建完成后启动服务端,首次访问管理平台时会自动跳转至初始化引导页,在 Web 界面设置管理员账号即可。
如因 IP 白名单无法登录,可在启动时添加
--unlock参数解除限制:bashdocker compose exec ssh-upgrade-web /app/server --unlock 或 /usr/local/bin/ssh-upgrade-server --unlock