在客户端能够发起连接之前,必须首先拉起数据库后台监听服务。核心主服务程序名为 postgres。
最基础的手动启动方式是直接调用二进制程序并指定数据目录:
$ postgres -D /usr/local/pgsql/data >logfile 2>&1 &
若未指定 -D,服务会自动读取环境变量 PGDATA 的路径配置。
为了简化启动与后台转储管理,官方提供了高级控制管理工具 pg_ctl:
pg_ctl start -l logfile -D /usr/local/pgsql/data
它不仅能在后台安全拉起服务并接管标准输出日志,还提供了查询运行状态(pg_ctl status)以及安全关闭实例的能力。
在生产服务器上,推荐将服务托付给操作系统的服务管理器(如 Linux 的 systemd)。示例服务配置文件(/etc/systemd/system/postgresql.service)如下:
[Unit] Description=PostgreSQL Database Server After=network.target [Service] Type=notify User=postgres ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data ExecReload=/bin/kill -HUP $MAINPID KillMode=mixed KillSignal=SIGINT TimeoutSec=120 [Install] WantedBy=multi-user.target
最常见的服务启动失败根因包括:端口被既有进程占用、数据目录属主权限错误、共享内存或信号量资源耗尽,或配置参数语法错误。请检查服务器日志以定位根本原因。
如果客户端无法连接,请确认 listen_addresses 已配置为允许外部连接,操作系统防火墙已放行对应端口,且 pg_hba.conf 中包含允许该来源主机的规则。