![无法从 init.d 脚本连接到 postgresql 数据库 (Debian)](https://linux22.com/image/15776/%E6%97%A0%E6%B3%95%E4%BB%8E%20init.d%20%E8%84%9A%E6%9C%AC%E8%BF%9E%E6%8E%A5%E5%88%B0%20postgresql%20%E6%95%B0%E6%8D%AE%E5%BA%93%20(Debian).png)
运行良好的脚本在放入 /etc/init.d/ 脚本(consolenew)以在启动时激活时通常会失败。具体来说,它无法打开 PostgreSQL 数据库,并给出错误:could not connect to server: Connection refused
init.d/console新设置:
#### BEGIN INIT INFO
# Provides: consolenew
# Required-Start: $all $postgresql $network
# Required-Stop: $all $postgresql $network
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: ....
#### END INIT INFO
/path-to-file/consolenew.sh &
系统是 Debian 8。这里缺少什么才能让 PostgreSQL 工作?
答案1
最有可能的是,该脚本放置在/etc/init.d/scripts
由未在 postgresql RDBMS 中表示的用户激活的位置(很可能该用户是root
)。检查设置中的脚本/etc/init.d/scripts
是否从 postgersql 中存在的用户/角色激活,并且该用户允许在pg_gba.conf
文件中连接。
答案2
如果我将程序移至 Gnome 桌面管理器 (/etc/gdm3/Init) 的 Init 脚本,则该程序可以运行(即 PostgreSQL 及时加载以进行连接)。
除非有人有其他解决方案,否则我会使用它。
编辑:如果指定了 After: postgresql 服务,则 systemd 脚本也可以工作。