在Centos 6上通过yum仓库安装了Postgres 9.2的新版本,当postgres被配置为开箱即用'postgres:postgres‘(u:g)运行时,如何以不同的用户身份运行postgres?
发布于 2012-10-18 02:32:21
这只适用于新安装(因为它与我的情况有关),因为它涉及到清除数据目录。
在使用打包的启动脚本进行全新安装时,我采取了以下步骤来解决此问题:
如果您已经使用postgres用户:组执行了initdb过程,请删除postgres数据目录/var/lib/pgsql/9.2/data将启动脚本(/etc/init.d/postgresql-9.2)配置为NEWUSER:NEWGROUP.
NEWUSER:NEWGROUP.
postgres:postgres的所有实例使用NEWUSER.
/etc/init.d/postgres initdb替换任何$SU -l postgres行中的所有$SU -l postgres实例以使用新/etc/init.d/postgres initdb重新生成集群请确保创建的所有日志均归新用户所有或移除旧日志如果在initdb上出现错误(在我的例子中,配置文件是在/var/lib/pgsql/9.2/data/postgresql.conf).
我知道这可能不是其他人正在寻找的,如果他们有现有的postgres数据库,并想重新启动服务器,以不同的用户/组组合运行-这不是我的情况,我没有看到任何地方张贴了使用预打包的启动脚本进行‘全新’安装的答案。
发布于 2012-10-18 06:14:24
除了AndrewPK的解释之外,我想要注意的是,您也可以以任何用户的身份启动新的PostgreSQL实例,方法是停止并禁用系统Pg服务,然后使用:
initdb -D /path/to/data/directory
pg_ctl start -D /path/to/data/directory不过,这不会在引导时自动启动服务器。为此,您必须集成到init系统中。在CentOS 6上,在/etc/init.d/中添加一个简单的System V风格的初始化脚本和一个到/etc/rc3.d/或/etc/rc3.d/ (取决于默认运行级别)的适当符号链接就足够了。
如果同时运行多个实例,则它们必须位于不同的端口上。在数据目录中更改postgresql.conf中的port指令,或者在使用pg_ctl -o "-p 5433" ...启动时设置它。如果您的用户对缺省套接字目录没有写权限,则可能还需要覆盖unix_socket_directories。
https://stackoverflow.com/questions/12940943
复制相似问题