在Windows环境下为PostgreSQL添加新的实例

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

在原有PostgreSQL实例正常运行的情况下新增一个实例,使用不同的端口运行,方便分开管理不同的数据库。


一、环境设置

将PostgreSQL主目录(如C:\Program Files\PostgreSQL\10\bin)加入到Path环境变量中,否则pg_ctl和initdb等相关语句都无法使用。
设置环境变量

二、操作步骤

1.为新实例创建数据目录

使用语句:

initdb -D "D:\PostgreSQL\data2" -E UTF-8 --locale=chs -U postgres -W

语句运行后需要输入两次密码
在这里插入图片描述

其中"D:\PostgreSQL\data2"是新实例的目录位置,创建时不要设置到C:\Program Files\目录下,否则会失败。想放到C:\Program Files\PostgreSQL\10下与原有data并列的话可以先在其他路径创建,之后将data2文件夹整个复制过去,后续的路径和相关语句也要同步变动。
通常一个数据目录data会占用3~10G的存储空间,也会随着后续的使用越来越大。不建议将其设置到C盘。

2.修改新实例数据目录下的配置文件

(1)修改postgres.conf:
①修改第63行的

port = 5432				# (change requires restart)

为其他的具体端口号,该端口号不能与原有实例的端口号相同,也不能与其他程序的端口号冲突。
②有非本机连接需求的话需要修改第59行的监听端口为*

listen_addresses = '*'		# what IP address(es) to listen on;

③修改第41行的数据路径

#data_directory = 'D:\PostgreSQL\data2'		# use data in another directory

④修改第43行的pg_hba.conf文件路径

#hba_file = 'D:\PostgreSQL\data2\pg_hba.conf'	# host-based authentication file
					# (change requires restart)

⑤修改第45行的pg_ident.conf文件路径

#ident_file = 'D:\PostgreSQL\data2\pg_ident.conf'	# ident configuration file
					# (change requires restart)

⑥修改第365行的日志文件存储路径

#log_directory = 'D:\PostgreSQL\data2\log'			# directory where log files are written,
					# can be absolute or relative to PGDATA

(2)必须修改pg_hba.conf第84~90行的trust为md5,否则数据库不用密码就能连接,会因裸奔而受到勒索和破坏:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

3.为新实例数据目录注册服务

使用语句:

pg_ctl register -N "postgresql-data2" -D "D:\PostgreSQL\data2"

postgresql-data2是新注册的服务名称,可以根据实际情况修改为其他名称。

4.启动服务

使用语句:

pg_ctl start -N "postgresql-data2" -D "D:\PostgreSQL\data2"

启动服务前必须完成步骤2中的配置修改,否则会因为端口冲突等原因报错(如下图)。
因
正常启动的结果如下图:
服务正常启动

5.测试连接

使用SQL Shell、pgAdmin、Navicat等进行连接测试,验证服务是否可以正常连接。
如果本机可以连接而其他机器不能连接注意在pg_hba.conf最后一行增加

host    all             all             0.0.0.0/0            md5

防火墙也要对新的服务放行。
防火墙设置放行某个端口
使用Navicat验证能够成功连接
Navicat验证连接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值