我想安装 postgresql 用作 Windows 应用程序的后端。
如果系统上尚未安装 postgresql,这似乎没有问题。
如果已经安装了 postgresql,那么除非命令行参数包含现有安装的 super 密码等,否则安装将失败。 因为我可能永远不会知道任何预先存在的 postgresql 实例的 super 密码或其他帐户详细信息,而机器所有者可能也不知道,这似乎会挫败在这种情况下安装 postgresql 的任何尝试。
我相信安装完全独立的 sql server 实例是可能的,但这对 postgresql 来说可能吗?
顺便说一句: 如果命令行确实包含正确的超级密码,那么安装似乎只是覆盖现有安装并忽略 --prefix 等参数。 在进行第二次安装之前,我使用 init db 创建了一个新的数据库集群,但是这个新集群被忽略了?
最佳答案
通常,您可以拥有多个独立 PostgreSQL 实例。严格来说它是具有独立的数据库集群:
- 数据目录
- 配置(例如
postgresql.conf
、pg_hba.conf
) - 监听TCP/UDP端口(默认5432+)
- 所有者用户和 super 用户角色
- 语言环境和默认编码
- 日志文件
- postmaster 服务器进程(在 Windows postgres.exe 上)
完美的例子是 Debian,易于使用 postgresql-common
基础设施(pg_ctlcluster、pg_lsclusters、pg_createcluster、pg_dropcluster,包括 SSL、日志轮换等)。
编辑:
我发现在 Windows 下使用 EnterpriseDB's installer 安装相同版本的 PostgreSQL 的第二个、第三个等实例相当容易。 , 不需要使用 initdb
和 pg_ctl
(假设 64 位安装,可能需要使用 Program Files (x86)
进行 32 位安装):
- 以管理员权限打开
cmd
(以管理员身份运行) - 执行:
cd "C:\Program Files\PostgreSQL\9.0\installer\server"
- 创建新的数据库集群(每一步按 Enter):
initcluster.vbs postgres postgres 12345 "C:\Program Files\PostgreSQL\9.0""C:\Program Files\PostgreSQL\9.0\data2"5433 DEFAULT
- 注册为 Windows 服务:
startupcfg.vbs 9.0 postgres 12345 "C:\Program Files\PostgreSQL\9.0""C:\Program Files\PostgreSQL\9.0\data2"postgresql-x64-9.0-2
- 使用
services.msc
运行新创建的服务postgresql-x64-9.0-2
并且您有第二个服务器
将 12345
更改为您在 PostgreSQL 安装期间指定的密码。您不必使用 data2
目录,使用您喜欢的任何内容(但当然不是现有的 data
目录)。
关于sql-server - Postgresql的独立实例是否可能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6241793/