Postgresql 9.5 安装 - 配置所有者 (postgres:105) 和数据所有者 (ubuntu:1000) 不匹配,并且配置所有者不是 root

use*_*363 5 postgresql ubuntu ubuntu-14.04 postgresql-9.5

在上安装postgres9.5ubuntu 14.04,以下命令因错误而停止:$sudo apt-get install postgresql-9.5 pgadmin3

这是错误消息:

 Preparing to unpack .../postgresql-9.5_9.5.4-1.pgdg14.04+2_amd64.deb ...
 * Stopping PostgreSQL 9.5 database server                                       * Error: Config owner (postgres:105) and data owner (ubuntu:1000) do not match, and config owner is not root
                                                                         [fail]
invoke-rc.d: initscript postgresql, action "stop" failed.
dpkg: warning: subprocess old pre-removal script returned error exit status 1
dpkg: trying script from the new package instead ...
 * Stopping PostgreSQL 9.5 database server                                       * Error: Config owner (postgres:105) and data owner (ubuntu:1000) do not match, and config owner is not root
                                                                         [fail]
invoke-rc.d: initscript postgresql, action "stop" failed.
dpkg: error processing archive /var/cache/apt/archives/postgresql-9.5_9.5.4-1.pgdg14.04+2_amd64.deb (--unpack):
 subprocess new pre-removal script returned error exit status 1
Errors were encountered while processing:
 /var/cache/apt/archives/postgresql-9.5_9.5.4-1.pgdg14.04+2_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Run Code Online (Sandbox Code Playgroud)

导致错误的原因是什么?

Chu*_*ima 11

我今天遇到了同样的问题,我认为这是因为我不小心将一个目录的所有权(递归)更改得太高了(修复的痛苦错误)。

systemd[1]: Starting PostgreSQL Cluster 10-main...                                                                                         
postgresql@10-main[3231]: Error: Config owner (postgres:111) and data owner (root:0) do not match, and config owner is not root            
systemd[1]: postgresql@10-main.service: Can't open PID file /var/run/postgresql/10-main.pid (yet?) after start: No such file or directory  
systemd[1]: postgresql@10-main.service: Failed with result 'protocol'.                                                                     
systemd[1]: Failed to start PostgreSQL Cluster 10-main.  
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我确保数据也归特殊用户所有,postgres 如下所示:

cd /var/lib/
chown -R postgres postgresql/
Run Code Online (Sandbox Code Playgroud)

之后,(以 root 身份)启动主服务正常工作:

start postgresql@10-main
root@myhost:/var/lib/postgresql# systemctl status postgresql@10-main.service
? postgresql@10-main.service - PostgreSQL Cluster 10-main
   Loaded: loaded (/lib/systemd/system/postgresql@.service; indirect; vendor preset: enabled)
   Active: active (running) since Tue 2018-05-15 07:34:30 UTC; 4s ago
  Process: 3333 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 10-main start (code=exited, status=0/SUCCESS)
 Main PID: 3347 (postgres)
    Tasks: 7 (limit: 1112)
   CGroup: /system.slice/system-postgresql.slice/postgresql@10-main.service
           ??3347 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf
           ??3355 postgres: 10/main: checkpointer process
           ??3356 postgres: 10/main: writer process
           ??3357 postgres: 10/main: wal writer process
           ??3358 postgres: 10/main: autovacuum launcher process
           ??3359 postgres: 10/main: stats collector process
           ??3360 postgres: 10/main: bgworker: logical replication launcher
                                        
Run Code Online (Sandbox Code Playgroud)


use*_*363 0

我发现的问题是,权限/var被意外更改为非root。之后chown -R/var有关的事情postgres开始正常工作。