实际上,我安装了 PostgreSQL 9.4(带有 postGIS 扩展),安装后,一切都工作正常。
正如许多人所说,我已经设置了 /data 文件夹,检查了配置文件,等等。在其他项目上工作,所以我有一段时间没有在 psql 上工作,但是当安装完成后,它曾经正常工作,我创建了一个测试数据库,初始化了 postgres 用户等。
现在,我尝试启动 psql(使用“默认”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"?
当我检查服务状态时,我得到了以下信息:
postgresql.service - PostgreSQL RDBMS
Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)
Active: active (exited) since tue 2016-05-24 09:24:13 CEST; 3s ago
Process: 5658 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 5658 (code=exited, status=0/SUCCESS)
使用命令启动/停止/重新启动服务
sudo service postgresql start (or restart or stop)
不会改变任何实际系统行为。
日志说:
DETAIL: Permissions should be u=rwx (0700).
FATAL: data directory "/var/lib/postgresql/9.4/main" has group or world access
答案1
在 debian 系统上,postgresql 文件和目录应由 user 所属postgres
,属于 group postgres
,具有0700
(目录)或0600
(文件)权限。
如果不是这样,您可以使用以下方法修复权限和所有权:
sudo chown -R postgres:postgres /var/lib/postgresql/9.4/
sudo chmod -R u=rwX,go= /var/lib/postgresql/9.4/
X
请注意命令中的大写字母chmod
。与小写不同x
,它将设置执行位仅有的在目录和文件上已经可执行文件(pg 目录中不应该有任何可执行文件)。
然后重新启动postgresql服务。
答案2
如果您确定您的 postgres 服务器正在运行,请尝试通过将主机指定为 localhost 来登录。当您单独使用 psql 时,它正在尝试使用套接字进行连接。
当我升级 Postgres 并想仍然访问我的旧服务器时,我遇到了这个问题。新的 psql 很混乱。
尝试:
psql -U username -h localhost
答案3
在运行时全新安装 postgreSQL13 后,我收到了完全相同的错误消息psql
(无论是从正常的命令提示符还是之后sudo su - postgres
):
psql: error: 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"?
事实证明,我真的只需要启动该服务,因为它也是建议的当我收到有关“/var/run/postgresql/.s.PGSQL.5432”的错误时,如何访问 Postgres?。
尝试:
sudo systemctl start postgresql
(或用于enable
在每次启动时启动它,请参阅Linux 上的 PostgreSQL 入门) 或者sudo service postgresql start
(例如 WSL2 上需要)。
然后:
sudo su - postgres
psql
你就在里面。
也许它对某人有帮助。不过,您的问题可能有所不同,因为您的服务器已经在运行。