在我的 中安装postgres-9.3
via后,其默认配置将套接字放入目录中。我有(也安装了 via),默认情况下由 管理,并启用了选项。这意味着在 上运行的任何 Web 应用程序都无法访问,因此请连接到。我已更改 postgres 配置,因此它应该将其套接字放入 中,就像 中一样。yum
CentOS 7
/tmp
httpd
yum
system.d
PrivateTmp
httpd
/tmp
postgres
/var/run/postgres
Ubuntu
现在的问题是,postgres
没有足够的权限写入/var/run
。我的第一个想法是这样做:
chown postgres:postgres /var/run/postgres
但是/var/run
重启后目录会被清理,所以这个方法行不通。我的问题是:
如何以能够持续重启的方式授予用户/var/run/postgres
访问权限?postgres
我不想更改套接字位置,也不想更改httpd
的system.d
配置。我只想postgres
能够写入/var/run/postgres
。任何帮助都将不胜感激。
答案1
你确定该套接字只存在/tmp
于 CentOS 7 上吗?
Fedora 的最新版本有两个套接字副本,一个在/run/postgresql
(这是/var/run/postgresql
链接解析后的实际位置),这是现代系统上的首选版本,另一个在,/tmp
供期望在那里找到它的传统客户端使用。
无论如何,如果您确实需要确保在启动时创建目录,那么请使用一个tmpfiles.d
文件,例如/usr/lib/tmpfiles.d/postgresql.conf
Fedora 中附带的文件,其中包含:
d /var/run/postgresql 0755 postgres postgres -
答案2
目录/var/run
是 CentOS 7 中的符号链接。PostgreSQL/run
的套接字目录是/run/postgresql
。它是一个临时目录,在启动时创建。
随着 systemd 的出现,一种名为systemd-tmp文件已被引入来管理临时文件和目录。
Systemd-tmpfiles 在启动期间创建临时目录并设置其所有者、组和权限。CentOS 7 在 中具有针对 PostgreSQL 的 systemd-tmpfiles 配置/usr/lib/tmpfiles.d/postgresql-96.conf
。默认情况下,该文件包含以下行:
d /run/postgresql 0755 postgres postgres -
您可以通过编辑该行来更改权限、所有者和组。但是,进行此类更改的推荐方式不是直接编辑 下的文件/usr/lib/tmpfiles.d/
,而是将配置文件复制到/etc/tmpfiles.d/
,然后在该副本中进行必要的更改。
答案3
只需将您想要的命令放入 /etc/rc.local 文件中,它们将在每次启动过程结束时执行。