如何在pgAdmin中创建两个本地服务器?遇端口连接拒绝问题
你遇到的核心问题是:pgAdmin里的“服务器”只是连接配置,不是真的创建新的PostgreSQL服务。要得到全新无数据的测试服务器,得先在本地启动另一个独立的PostgreSQL实例,监听5400端口,再配置pgAdmin连接。
具体步骤:
1. 创建独立的数据目录
每个PostgreSQL实例需要专属的数据目录,不能和原5432端口的实例共用。
Windows示例:
新建文件夹C:\Program Files\PostgreSQL\15\data_test(路径和版本号根据你的实际情况调整),打开命令提示符切换到PostgreSQL的bin目录(比如cd C:\Program Files\PostgreSQL\15\bin),执行初始化命令:initdb -D "C:\Program Files\PostgreSQL\15\data_test" -U postgres -W执行后会提示设置超级用户postgres的密码,记好这个密码。
Linux/macOS示例:
创建目录并修改权限:sudo mkdir -p /var/lib/postgresql/15/test_data sudo chown postgres:postgres /var/lib/postgresql/15/test_data切换到postgres用户初始化:
sudo -u postgres initdb -D /var/lib/postgresql/15/test_data
2. 修改新实例的配置文件
进入刚创建的数据目录,找到postgresql.conf文件并编辑:
- 找到
port参数,改成port = 5400 - 确保
listen_addresses设置为'localhost'(允许本地连接)
再找到pg_hba.conf文件,添加或确认存在以下行(允许本地TCP连接):
host all all 127.0.0.1/32 scram-sha-256
(如果你的PostgreSQL版本低于14,可替换为md5)
3. 启动新的PostgreSQL实例
Windows:
命令行执行启动命令:pg_ctl -D "C:\Program Files\PostgreSQL\15\data_test" start若要开机自启,可注册成Windows服务:
pg_ctl register -N "PostgreSQL15_Test" -D "C:\Program Files\PostgreSQL\15\data_test"之后在服务管理器里找到该服务启动即可。
Linux/macOS:
启动实例:sudo -u postgres pg_ctl -D /var/lib/postgresql/15/test_data start配置systemd自启的话,新建
/etc/systemd/system/postgresql-test.service文件,内容如下:[Unit] Description=PostgreSQL Test Instance Requires=network.target After=network.target [Service] Type=forking User=postgres Group=postgres ExecStart=/usr/lib/postgresql/15/bin/pg_ctl start -D /var/lib/postgresql/15/test_data ExecStop=/usr/lib/postgresql/15/bin/pg_ctl stop -D /var/lib/postgresql/15/test_data ExecReload=/usr/lib/postgresql/15/bin/pg_ctl reload -D /var/lib/postgresql/15/test_data [Install] WantedBy=multi-user.target然后执行:
sudo systemctl daemon-reload sudo systemctl enable postgresql-test sudo systemctl start postgresql-test
4. 在pgAdmin里配置新服务器
回到pgAdmin,点击“添加服务器”:
- 常规标签:自定义名称,比如“Test Server 5400”
- 连接标签:主机名/地址填
localhost,端口填5400,维护数据库填postgres,用户名填postgres,密码填初始化时设置的密码 - 保存后即可连接到全新的无数据实例
内容的提问来源于stack exchange,提问作者FullStack Geek

