3

通过 Centos 6 上的 yum 存储库新安装的 Postgres 9.2 版本,当它被配置为开箱即用的 'postgres:postgres' (u:g) 运行时,如何以不同的用户身份运行 postgres?

4

2 回答 2

4

除了 AndrewPK 的解释之外,我还想指出,您还可以通过停止和禁用系统 Pg 服务来以任何用户身份启动新的 PostgreSQL 实例,然后使用:

initdb -D /path/to/data/directory
pg_ctl start -D /path/to/data/directory

但是,这不会在启动时自动启动服务器。为此,您必须集成到您的初始化系统中。在 CentOS 6 上,/etc/init.d/ 中的简单 System V 风格的初始化脚本和 /etc/rc3.d/ 或 /etc/rc3.d/ 的合适符号链接(取决于默认运行级别)就足够了。

如果一次运行多个实例,它们必须位于不同的端口上。更改 datadir 中的port指令postgresql.conf或在启动时使用pg_ctl -o "-p 5433" .... unix_socket_directories如果您的用户没有对默认套接字目录的写入权限,您可能还需要覆盖。

于 2012-10-17T22:14:24.337 回答
1

这仅适用于全新安装(与我的情况有关),因为它涉及删除数据目录。

在使用打包的启动脚本进行全新安装时,我为解决此问题所采取的步骤:

  1. /var/lib/pgsql/9.2/data如果您已经通过 initdb 进程并将 postgres user:group 配置为默认值,请删除 postgres 数据目录。
  2. 修改启动脚本 ( ) 以替换with/etc/init.d/postgresql-9.2的所有实例。postgres:postgresNEWUSER:NEWGROUP
  3. 修改启动脚本以将postgres任何$SU -l postgres行中的所有实例替换为NEWUSER.
  4. 运行/etc/init.d/postgres initdb以使用新用户名重新生成集群
  5. 确保创建的所有日志都归新用户所有,或者如果 initdb 上出现错误,则删除旧日志(在我的案例中,配置文件位于 中/var/lib/pgsql/9.2/data/postgresql.conf)。
  6. 启动 postgres,它现在应该在新用户/组下运行。

我知道这可能不是其他人正在寻找的,如果他们有现有的 postgres 数据库并且想要重新启动服务器以作为不同的用户/组组合运行 - 这不是我的情况,我没有看到任何地方发布的答案使用预打包的启动脚本进行“全新”安装。

于 2012-10-17T18:32:21.213 回答