【问题标题】:Can't get psql to work or Postgres to start server无法使 psql 工作或 Postgres 启动服务器
【发布时间】:2022-01-25 08:40:25
【问题描述】:

我已经在地狱里生活了两天了。我什么都试过了。最初,我收到一个涉及某种不存在的 postmaster.pid 文件的错误。看起来有些东西导致服务器意外停止,从而导致了各种问题。然后我在登录时遇到问题,无论我做什么,我一直收到错误的密码错误。只是为了做psql 它要求输入密码。我不记得需要这样做,而且我宁愿不需要密码。

我已尝试重新启动计算机并完全卸载所有 postgres 文件和应用程序以及所有内容,然后重新下载所有内容,但我仍然在错误之后出现错误。我只希望服务器启动,我希望psql 命令在终端(MacOS 顺便说一句)中工作。

这是我遇到的最新错误。服务器无法启动并告诉我查看日志。

这是日志:

2021-12-24 17:50:46.439 PST [1242] LOG:  starting PostgreSQL 14.1 on xxxx, compiled by Apple clang version 12.0.5 (xxxx), 64-bit
2021-12-24 17:50:46.444 PST [1242] LOG:  listening on IPv6 address "xxxx", port 5432
2021-12-24 17:50:46.444 PST [1242] LOG:  listening on IPv4 address "xxxxx", port 5432
2021-12-24 17:50:46.446 PST [1242] FATAL:  could not open lock file "/tmp/.s.PGSQL.5432.lock": Permission denied
2021-12-24 17:50:46.448 PST [1242] LOG:  database system is shut down

我该怎么办?拜托,我会尝试任何事情!

编辑:我在网上找到了一些说要删除锁定文件的内容。我怎么做?像rm /tmp/.s.PGSQL.5432.lock 这么简单吗?在我这样做之后,我收到一条消息说override rw------- 503/wheel for /tmp/.s.PGSQL.5432.lock? 我该怎么回答这个问题?

【问题讨论】:

  • 您应该提供一些关于/tmp 目录的信息,例如ls -al /tmp
  • @axlis 在那个命令之后我得到lrwxr-xr-x@ 1 root wheel 11 Jan 1 2020 /tmp -> private/tmp 你能从这里帮助我吗?我不知道我在做什么。
  • 检查这篇文章中的说明是否有效:stackoverflow.com/questions/22851352/…
  • @rajorshi 您好,感谢您的回复。我尝试了第一个解决方案。他们说要做的第一个命令是:sudo chown -R postgres:postgres /var/run/postgresql 我得到以下chown: postgres: illegal group name 我现在该怎么办?
  • 锁由用户 503 拥有,因此 postgres 用户似乎有一个新的 id(如果有)并且 postgres 组不再存在。你需要正确安装postgresql。

标签: postgresql


【解决方案1】:

首先我在我的系统中重现问题(centos 8)

systemctl start postgresql.service # Normal.

su --command psql postgres # Get the shell successfully.

chown root:root /tmp/.s.PGSQL.5432.lock # Something bad!

systemctl restart postgresql.service # Fail.

服务日志

Stopped PostgreSQL database server.
Starting PostgreSQL database server...
could not open lock file "/tmp/.s.PGSQL.5432.lock": Permission denied
database system is shut down

那你应该明白问题所在了

rm -f /tmp/.s.PGSQL.5432.lock # Fix the problem in my system.

systemctl restart postgresql.service

su --command psql postgres # Get the shell successfully again.

这里是正确的权限可以帮助你解决问题

drwxrwxrwt.   3 root root  4096 Dec 25 19:39 tmp

srwxrwxrwx   1 postgres postgres    0 Dec 25 19:36 .s.PGSQL.5432
-rw-------   1 postgres postgres   48 Dec 25 19:36 .s.PGSQL.5432.lock

我的个人建议

理解错误信息的含义是解决问题的关键。

【讨论】:

  • 感谢@axlis,我删除了锁定文件,然后还运行了重新启动命令。然后 psql 仍然对我不起作用。现在我检查日志并看到错误“无法绑定 Unix 地址/tmp/.s.PGSQL.5432": Address already in use 我现在该怎么办?我不知道那个地址中有什么......
  • 你也应该删除.s.PGSQL.5432,它只是一个套接字。该服务将在重新启动时重新创建它。
  • 谢谢。我这样做了,然后我还必须为我的名字创建数据库。现在我让 psql 开始工作了! Postgres 应用程序显示端口正在使用,但我认为这可能是因为我使用自制软件启动了端口?
猜你喜欢
  • 2014-05-18
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 2021-02-09
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
  • 2020-11-10
相关资源
最近更新 更多