PostgreSQL 无法创建任何 TCP/IP 套接字的 Mavericks [已关闭]

PostgreSQL could not create any TCP/IP sockets' Mavericks [closed]

提问人:Thomas Murphy 提问时间:11/26/2013 最后编辑:CristikThomas Murphy 更新时间:5/25/2022 访问量:53360

问:


这个问题似乎与特定的编程问题、软件算法或程序员主要使用的软件工具无关。如果您认为该问题在另一个 Stack Exchange 站点上是主题,您可以发表评论以解释在哪里可以回答该问题。

去年关闭。

我正在通过 brew 安装。

错误消息:

当我打电话时

postgres

我收到错误

LOG:  could not bind IPv6 socket: Address already in use
HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
LOG:  could not bind IPv4 socket: Address already in use
HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and  retry.
LOG:  could not bind IPv6 socket: Address already in use
HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
WARNING:  could not create listen socket for "localhost"
FATAL:  could not create any TCP/IP sockets

运行

postgres -D /usr/local/var/postgres

创建相同的错误

createdb

提示我输入密码两次,然后说,

createdb: could not connect to database template1: FATAL:  password authentication failed for user "thomasmurphy"

我试过什么 * 卸载并重新安装 pg gem,卸载并重新安装 postgres * 更新命令行工具 * 满足所有冲泡医生的需求 * 编辑 pg_hba.conf 的权限 * 编辑.bash_profile以确保它包含上述目录

我的 Postgres 在我的工作计算机上完美运行,也在 Mavericks 上运行,所以这让我感到有点边缘。我还可以使用哪些其他向量来尝试解决这个问题?

PostgreSQL macOS 套接字 TCP

评论

1赞 Richard Huxton 11/26/2013
Is another postmaster already running on port 5432?- 嗯,是吗?
0赞 Thomas Murphy 11/26/2013
@RichardHuxton 公平的问题。但是不,5432 上没有运行任何连接。
0赞 Thomas Murphy 11/26/2013
我在浏览器中输入了 localhost:5432 并收到“未收到数据”,您知道,这实际上听起来好像服务器正在运行但没有发送响应。这符合你的理解吗?有没有一个我应该发出的 bash shell 命令比这更笨拙?
1赞 Richard Huxton 11/26/2013
已经有几年没有 mac 了。您是否安装了lsof(linux.die.net/man/8/lsof)或netcat(linux.die.net/man/1/nc)?Try 或 .如果做不到这一点.lsof -i -n -P | grep 5432nc localhost 5432ps auxw | grep postgres
0赞 Thomas Murphy 11/26/2013
听上去很好。我在那个盒子上也有一个 Ubuntu VM,所以我也会试一试,以缩小出错的可能性。我开始怀疑问题在于它没有将我身份验证为超级用户来访问 root 帐户。

答:

9赞 Chris Travers 12/13/2013 #1

您遇到的错误是因为 PostgreSQL 正在运行。我怎么知道?因为它拒绝了您的密码。这很清楚。

现在你真正的问题可能是你需要在修改 pg_hba.conf 后重新启动 PostgreSQL 才能给你信任访问权限。然后,您可以:

 ALTER USER foo WITH PASSWORD 'bar';

关于启动和重启PostgreSQL,请看这个问题:如何在Mac OS X上启动PostgreSQL服务器?

评论

0赞 Thomas Murphy 12/13/2013
我无法再重现此问题,因为我在这台机器上干净安装了PostgreSQL。这个答案似乎与我遇到的问题一致,所以我会接受。
18赞 gpxlcj 5/16/2015 #2

您遇到的错误是因为您的主机已损坏。检查您的文件。/etc/hosts

放在主机的第一行。127.0.0.1 localhost

评论

0赞 Amit Kumar 9/30/2015
它对我有用,但我无法解释为什么?您还能说出主机文件中没有该条目的问题吗?
0赞 gpxlcj 11/10/2016
localhost 与 127.0.0.1 不同。在某些应用程序中,本地主机不需要转换为 IP 地址。但是,它
0赞 gpxlcj 11/10/2016
但是,它需要在这里翻译。PostgreSQL 和 hosts 配置文件都不会在 localhost 和 IP 之间建立关联。
4赞 kazou 8/17/2017 #3

Linux:通过在命令行中运行 来确保环回接口已启动。如果它没有启动,你可以用它来调出它。 ifconfig /sbin/ifconfig lo 127.0.0.1

评论

1赞 Sathish 2/9/2018
像魅力一样工作。谢谢!
1赞 Valevalorin 4/19/2019
我的男人!非常感谢。我从来没有想过这一点。
0赞 Wildcard 12/15/2017 #4

可能不是你的坏了。这可能是其他破坏DNS查找的东西,即使正确的行在/etc/hosts/etc/hostslocalhost

检查一下你是否得到了结果。另请查看 。当用户 Postgres 运行时,也要检查这些内容。nslookup localhost127.0.0.1getent hosts localhost

评论

0赞 Wildcard 9/4/2019
里面的那一行也可能是相关的。hosts/etc/nsswitch.conf
0赞 Anto 8/16/2019 #5

在这种情况下,有多种方案和位置需要检查。因此迷路了一次。 通常的默认文件应如下所示:hosts

[root@localmachine ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

要确认是否能够解决,请使用以下方法进行测试:localhostping

[root@localmachine ~]# ping localhost

检查并确认是否存在:cat /etc/nsswitch.conf|grep hostsfiles

#     hosts: files dns
#     hosts: files dns  # from user file
#hosts:     db files nisplus nis dns
hosts:     files mdns4_minimal [NOTFOUND=return] dns myhostname

检查文件的权限,它应该是(所有进程/用户都可以读取):/etc/hosts644

[root@localmachine ~]# ls -al /etc/hosts
-rw-r--r--. 1 root root 240 Aug 14 08:04 /etc/hosts

对于那些有足够时间的人,我在这里创建了一篇详细的博客文章: https://coffeewithbytes.com/blog/postgres-hostsfile-permissions/

我已经提到了我是如何检查并得出结论的。

0赞 Mohammad Reza 7/18/2020 #6

您之前是否安装了其他版本的 Postgres?就我而言,我试图执行:

sudo systemctl restart postgresql

这是不正确的!! 最后我找到了正确的一个:

sudo systemctl restart postgresql-12

我有两个版本的 Postgres......

3赞 Megidd 6/11/2021 #7

重新启动计算机为我解决了错误。

评论

1赞 khush 5/8/2023
奇怪,但这也对我有用。
-2赞 The Ultimate shield 8/30/2021 #8

我知道这是一个很老的问题,但我想先发布对我有用的东西,我在任务管理器上结束了每个postgres任务。 其次,我使用下面的这些方法再次清除并重新安装了postgressql

首先删除已安装的 postgres:

sudo apt-get purge postgr* 
sudo apt-get autoremove

然后安装“synaptic”:

sudo apt-get install synaptic
sudo apt-get update

然后安装 Postgres

sudo apt-get install postgresql postgresql-contrib

瓦拉它起作用了。警告它可能会影响可能在端口 5432 上运行的其他项目。请注意。

评论

1赞 tripleee 5/25/2022
问题是询问Mac问题。
-1赞 Fasunle Kehinde Hussein 5/25/2022 #9

无法创建 TCP/IP 连接或无法连接到本地主机

TCP/IP 重置有助于在一整天使用几种不同的技术后解决问题。事实证明,由于TCP / IP配置错误,问题出在我的PC上。

我使用以下命令来实现重置。

  1. 重置 Windows 套接字目录 (winsock)。您可以在 winsock 上阅读更多内容
netsh winsock reset catalog
  1. 重置 TCP/IP:
netsh int ip reset

然后,您将重新启动PC/系统,以便配置重置可以工作。

如果您无法理解这一点,请观看 Landon Johnson 频道上的视频解释

评论

0赞 Giovanni Silva 4/14/2023
这对我来说很有用,解决了我的问题