通过 Centos 6 上的 yum 存储库新安装的 Postgres 9.2 版本,当它被配置为开箱即用的 'postgres:postgres' (u:g) 运行时,如何以不同的用户身份运行 postgres?
问问题
19252 次
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
这仅适用于全新安装(与我的情况有关),因为它涉及删除数据目录。
在使用打包的启动脚本进行全新安装时,我为解决此问题所采取的步骤:
/var/lib/pgsql/9.2/data
如果您已经通过 initdb 进程并将 postgres user:group 配置为默认值,请删除 postgres 数据目录。- 修改启动脚本 ( ) 以替换with
/etc/init.d/postgresql-9.2
的所有实例。postgres:postgres
NEWUSER:NEWGROUP
- 修改启动脚本以将
postgres
任何$SU -l postgres
行中的所有实例替换为NEWUSER
. - 运行
/etc/init.d/postgres initdb
以使用新用户名重新生成集群 - 确保创建的所有日志都归新用户所有,或者如果 initdb 上出现错误,则删除旧日志(在我的案例中,配置文件位于 中
/var/lib/pgsql/9.2/data/postgresql.conf
)。 - 启动 postgres,它现在应该在新用户/组下运行。
我知道这可能不是其他人正在寻找的,如果他们有现有的 postgres 数据库并且想要重新启动服务器以作为不同的用户/组组合运行 - 这不是我的情况,我没有看到任何地方发布的答案使用预打包的启动脚本进行“全新”安装。
于 2012-10-17T18:32:21.213 回答