移动数据目录后 Postgresql-Server 将无法启动

dav*_*ave 6 postgresql postgresql-9.5 postgresql-9.6

我正在我的 Ubuntu 17.04 机器上运行本地 postgresql 服务器(9.5 和 9.6)。按照本指南将我的数据目录移动到另一个硬盘驱动器后,服务器无法启动。

\n

即与

\n
sudo service postgresql restart && sudo service postgresql status \n\n\xe2\x97\x8f postgresql.service - PostgreSQL RDBMS\n   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)\n   Active: active (exited) since Mon 2017-11-06 10:31:32 CET; 1min 42s ago\n  Process: 8962 ExecStart=/bin/true (code=exited, status=0/SUCCESS)\n Main PID: 8962 (code=exited, status=0/SUCCESS)\n\nNov 06 10:31:32 HERCULES systemd[1]: Starting PostgreSQL RDBMS...\nNov 06 10:31:32 HERCULES systemd[1]: Started PostgreSQL RDBMS.\n
Run Code Online (Sandbox Code Playgroud)\n

两个版本的日志都包含以下内容:

\n
pg_ctl: could not access directory "/media/daveknave/BIGFS/PGSQL/9.5/main": Keine Berechtigung\n
Run Code Online (Sandbox Code Playgroud)\n

“Keine Berechtigung”翻译为“拒绝许可”。

\n
ls -l /media/daveknave/BIGFS/PGSQL/9.5/main\n
Run Code Online (Sandbox Code Playgroud)\n

给出

\n
drwxrwxrwx 5 postgres postgres 4096 Sep 25 21:42 base\ndrwxrwxrwx 2 postgres postgres 4096 Nov  3 21:07 global\ndrwxrwxrwx 2 postgres postgres 4096 Sep 25 21:42 pg_clog\ndrwxrwxrwx 2 postgres postgres 4096 Sep 25 21:42 pg_commit_ts\ndrwxrwxrwx 2 postgres postgres 4096 Sep 25 21:42 pg_dynshmem\ndrwxrwxrwx 4 postgres postgres 4096 Sep 25 21:42 pg_logical\ndrwxrwxrwx 4 postgres postgres 4096 Sep 25 21:42 pg_multixact\ndrwxrwxrwx 2 postgres postgres 4096 Nov  3 21:07 pg_notify\ndrwxrwxrwx 2 postgres postgres 4096 Sep 25 21:42 pg_replslot\ndrwxrwxrwx 2 postgres postgres 4096 Sep 25 21:42 pg_serial\ndrwxrwxrwx 2 postgres postgres 4096 Sep 25 21:42 pg_snapshots\ndrwxrwxrwx 2 postgres postgres 4096 Nov  3 21:07 pg_stat\ndrwxrwxrwx 2 postgres postgres 4096 Sep 25 21:42 pg_stat_tmp\ndrwxrwxrwx 2 postgres postgres 4096 Sep 25 21:42 pg_subtrans\ndrwxrwxrwx 2 postgres postgres 4096 Sep 25 21:42 pg_tblspc\ndrwxrwxrwx 2 postgres postgres 4096 Sep 25 21:42 pg_twophase\n-rwxrwxrwx 1 postgres postgres    4 Sep 25 21:42 PG_VERSION\ndrwxrwxrwx 3 postgres postgres 4096 Nov  2 10:19 pg_xlog\n-rwxrwxrwx 1 postgres postgres   88 Sep 25 21:42 postgresql.auto.conf\n-rwxrwxrwx 1 postgres postgres  133 Nov  3 21:07 postmaster.opts\n-rwxrwxrwx 1 postgres postgres  100 Nov  3 21:07 postmaster.pid\n
Run Code Online (Sandbox Code Playgroud)\n

我已设置文件权限试图解决此问题,但没有结果。

\n

尝试使用访问服务器

\n
sudo -u postgres psql -W\n
Run Code Online (Sandbox Code Playgroud)\n

提示

\n
Password: \npsql: could not connect to server: Datei oder Verzeichnis nicht gefunden\n        Is the server running locally and accepting\n        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?\n
Run Code Online (Sandbox Code Playgroud)\n

有人可以帮忙吗?你们中有人遇到过同样的问题吗?我使用谷歌进行搜索,但找不到任何提示来解决我的问题。

\n

Joh*_* N. 7

/main验证权限

ls -l /media/daveknave/BIGFS/PGSQL/9.5/
Run Code Online (Sandbox Code Playgroud)

仍然可以postgres访问吗main

将用户切换到postgreswith su - postgres,然后浏览目录结构/media/daveknave/BIGFS/PGSQL/9.5/main/。您可以导航main过去base吗?

..../base使用以下命令验证下面的文件权限:

ls -lR /media/daveknave/BIGFS/PGSQL/9.5/main/base > ~/postrgres_main_perm.log
Run Code Online (Sandbox Code Playgroud)

进而

vi ~/postrgres_main_perm.log
Run Code Online (Sandbox Code Playgroud)

如果发现日志文件中权限不正确,则运行以下命令授予postgres该目录...main/base及其所有底层子目录的所有权限:

chown -Rv postgres:postgres /media/daveknave/BIGFS/PGSQL/9.5/main/base/
Run Code Online (Sandbox Code Playgroud)

注意:
在修改所有权限之前,请确保命令有效,方法是替换chown -Rv为破坏性较小的内容,例如ls -R或导航到.../main目录并发出较短的命令:chown -Rv postgres:postgres base/。这将确保您将命令应用到正确的目录。

尝试再次重新启动您的 PostgreSQL 实例。