当我在Ubuntu中更改数据目录时,Postgres无法正常工作

时间:2017-02-12 18:26:29

标签: linux postgresql ubuntu ubuntu-16.04

我是Linux和Postgres的新手。我一直试图将我的数据连接到另一个目录2天没有成功。

首先,我在postgres.conf中更改了数据目录:

data_directory = '/var/lib/postgresql/9.6/main'

要:

data_directory = '/media/cesar/My Book/data9.6'

当我尝试连接到Postgres时,我收到此错误:

cesar@ubuntu:/$ sudo -u postgres psql postgres
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

我多次重启Postgres服务器并更改配置也没有成功。

如果我改回旧目录,它可以正常工作。

cesar@ubuntu:/$ sudo /etc/init.d/postgresql restart
[sudo] password for cesar: 
[ ok ] Restarting postgresql (via systemctl): postgresql.service.
cesar@ubuntu:/$ sudo -u postgres psql postgres
psql (9.6.2)
Type "help" for help.
postgres=#

知道我做错了什么?

ls -s response

postgres@ubuntu:~$ ls -l /media/cesar/My\ Book/data9.6
total 149
drwxrwxrwx 1 cesar cesar     0 Jan  7 22:04 base
drwxrwxrwx 1 cesar cesar 16384 Feb  6 19:40 global
drwxrwxrwx 1 cesar cesar     0 Jan  7 21:56 pg_clog
drwxrwxrwx 1 cesar cesar     0 Jan  7 21:56 pg_commit_ts
drwxrwxrwx 1 cesar cesar     0 Jan  7 21:56 pg_dynshmem
-rwxrwxrwx 2 cesar cesar  4118 Jan  8 14:46 pg_hba.conf
-rwxrwxrwx 2 cesar cesar  1678 Jan  7 21:56 pg_ident.conf
drwxrwxrwx 1 cesar cesar 65536 Feb  6 00:16 pg_log
drwxrwxrwx 1 cesar cesar     0 Jan  7 21:56 pg_logical
drwxrwxrwx 1 cesar cesar     0 Jan  7 21:56 pg_multixact
drwxrwxrwx 1 cesar cesar     0 Feb  6 00:16 pg_notify
drwxrwxrwx 1 cesar cesar     0 Jan  7 21:56 pg_replslot
drwxrwxrwx 1 cesar cesar     0 Jan  7 21:56 pg_serial
drwxrwxrwx 1 cesar cesar     0 Jan  7 21:56 pg_snapshots
drwxrwxrwx 1 cesar cesar     0 Feb  6 00:16 pg_stat
drwxrwxrwx 1 cesar cesar     0 Feb  7 21:15 pg_stat_tmp
drwxrwxrwx 1 cesar cesar     0 Jan  7 21:56 pg_subtrans
drwxrwxrwx 1 cesar cesar     0 Jan  7 21:56 pg_tblspc
drwxrwxrwx 1 cesar cesar     0 Jan  7 21:56 pg_twophase
-rwxrwxrwx 2 cesar cesar     4 Jan  7 21:56 PG_VERSION
drwxrwxrwx 1 cesar cesar 32768 Feb  6 00:15 pg_xlog
-rwxrwxrwx 2 cesar cesar    90 Jan  7 21:56 postgresql.auto.conf
-rwxrwxrwx 1 cesar cesar 22267 Feb 12 14:25 postgresql.conf
-rwxrwxrwx 2 cesar cesar    67 Feb  6 00:16 postmaster.opts
-rwxrwxrwx 2 cesar cesar    35 Feb  6 00:16 postmaster.pid
-rwxrwxrwx 1 cesar cesar     3 Feb 12 14:52 test.txt

3 个答案:

答案 0 :(得分:2)

用户SQL应具有对数据目录的读,写和执行权限。没有其他用户应该具有写访问权限。您可以使用以下方式设置这些权限:

postgres

更改数据目录后,应运行chown -R postgres:postgres '/media/cesar/My Book/dataGE' chmod -R u+rwx,g-rwx,o-rwx '/media/cesar/My Book/dataGE' 以设置数据库文件:

initdb

答案 1 :(得分:0)

我想分享我的问题基本上是获得许可。 当我检查日志文件>> sudo nano /var/log/postgresql/postgresql-9.6-main.log时,DB Cluster无法启动>> pg_lsclusters “致命:数据目录“ /var/lib/postgresql/9.6/main/”具有组或全局访问权限的详细信息:权限应为u = rwx(0700)

已经提到了解决方案,所以我只执行了>> sudo chmod -R u = rwx'/var/lib/postgresql/9.6/main/'并重新启动了postgresql服务{值得注意的是花了一些时间来启动,这很好地表明了做某事}之后,我检查>> pg_lsclusters,是的,它起作用了!!

答案 2 :(得分:0)

添加到@Jameel和@Andomar的答案中(因为我在本地postgres db上遇到了这个问题),

我的设置是本地Postgres数据库。而且我启用了数据库日志记录功能,以查看数据库上正在运行的查询及其错误(仅供参考...我有一个休眠的应用程序在后端一直坚持到数据库并调试休眠问题,我觉得检查postgres日志很容易而不是费力地使用记录器配置。

postgres日志位于/9.6/Data/logs中。为了使用编辑器(例如sublime文本)打开日志,我向所有人添加了只读权限。尽管它并没有立即停止我的postgres服务器,但是在随后的重启尝试(例如重启笔记本电脑)后,postgres服务器无法启动。


以递归方式删除对/9.6/Data的所有人的所有权限解决了我的问题。我的意思是,它应该仅对Postgres用户进行读写,并且必须具有其他权限。