我是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
答案 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用户进行读写,并且必须具有其他权限。