1. 获取软件
下载地址: https://www.enterprisedb.com/download-postgresql-binaries
下载 Binaries from installerVersion 16.15 的 Win x86-64 版本。
2. 部署
2.1 部署目录
下载完成后,解压缩到D:/software/DevTools/PostgreSQL/PostgreSQL-16.15/ 。
最终的程序目录路径为: D:/software/dev-tools/postgresql-16.15-1-windows-x64-binaries/pgsql。
2.2 检查程序依赖环境
使用管理员身份运行 cmd 。
cd D:\software\dev-tools\postgresql-16.15-1-windows-x64-binaries\pgsql\bin\
pg_ctl --help
如果报错,则需要安装必要组件。
如果不报错,则进行下一步。
2.3 初始化数据库
initdb.exe -D "D:/PostgreSQL_Data/PostgreSQL16_Data" -E UTF-8 --locale=chs -U postgres -W
-D :指定数据库的存储目录
-E :设置默认编码
--locale :关于区域设置chs(chinese-simplified-china)。示例: --locale=chs
-U :指定超级用户。设置数据库超级管理员(默认为 postgres)的用户名。如果未指定,将使用当前运行命令的操作系统用户名
-W :提示设置密码。让 initdb 在初始化过程中,为超级用户交互式地提示输入密码
执行结果见下:
D:\software\dev-tools\postgresql-16.15-1-windows-x64-binaries\pgsql\bin>initdb.exe -D "D:/PostgreSQL_Data/PostgreSQL16_Data" -E UTF-8 --locale=chs -U postgres -W
属于此数据库系统的文件宿主为用户 "administrator".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "Chinese_China.936"进行初始化.
initdb: 无法为本地化语言环境"Chinese_China.936"找到合适的文本搜索配置
缺省的文本搜索配置将会被设置到"simple"禁止为数据页生成校验和.输入新的超级用户口令:再输入一遍:创建目录 D:/PostgreSQL_Data/PostgreSQL16_Data ... 成功
正在创建子目录 ... 成功
选择动态共享内存实现 ......windows
选择默认最大联接数 (max_connections) ... 100
选择默认共享缓冲区大小 (shared_buffers) ... 128MB
选择默认时区 ... Asia/Shanghai
创建配置文件 ... 成功
正在运行自举脚本 ...成功
正在执行自举后初始化 ...成功
同步数据到磁盘...成功initdb: 警告: 为本地连接启用"trust"身份验证
initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.成功。您现在可以用下面的命令开启数据库服务器:pg_ctl -D D:/PostgreSQL_Data/PostgreSQL16_Data -l 日志文件 startD:\software\dev-tools\postgresql-16.15-1-windows-x64-binaries\pgsql\bin>
2.4 启动数据库
pg_ctl -D D:/PostgreSQL_Data/PostgreSQL16_Data -l D:/PostgreSQL_Data/postgresql.log start
2.5 连接数据库
psql -U postgres -h 127.0.0.1 -p 5432# 检查pg版本
select version();# 退出
exit
2.6 停止数据库
1. 使用 pg_ctl stop 命令(最推荐)
这是最标准、最优雅的关闭方式。它会向 postmaster 主进程发送信号,让其自动完成所有事务的提交或回滚,然后安全地关闭所有子进程。
请打开一个新的命令行窗口(无需管理员权限),执行:
pg_ctl -D D:/PostgreSQL_Data/PostgreSQL16_Data stop
2. 使用 pg_ctl stop -m fast 命令(常用)
如果在执行 pg_ctl stop 时,发现系统卡住很久没有响应,可以加一个 -m fast 参数。它表示不等待客户端提交事务,直接回滚所有活动事务并断开连接,然后关闭数据库。这种方式通常比默认方式更快。
pg_ctl -D D:/PostgreSQL_Data/PostgreSQL16_Data stop -m fast
2.7 检查数据库状态
pg_ctl -D D:/PostgreSQL_Data/PostgreSQL16_Data status
2.8 注册为 Windows 服务
pg_ctl register -N "PostgreSQL16" -D "D:/PostgreSQL_Data/PostgreSQL16_Data" -U LocalSystem
-N "PostgreSQL16":为你注册的服务指定一个名称(servicename),可以根据需要自定义。
-D "D:/PostgreSQL_Data/PostgreSQL16_Data":指定你的数据库数据目录,即之前用 initdb 初始化的那个路径。
-U LocalSystem:这是关键参数,用于明确指定服务将以 LocalSystem 这个内置系统账户的身份运行。
2.9 启动 Windows 服务
net start PostgreSQL16
2.10 停止 Windows 服务
net stop PostgreSQL16