提问人:Thomas Murphy 提问时间:11/26/2013 最后编辑:CristikThomas Murphy 更新时间:5/25/2022 访问量:53360
PostgreSQL 无法创建任何 TCP/IP 套接字的 Mavericks [已关闭]
PostgreSQL could not create any TCP/IP sockets' Mavericks [closed]
问:
我正在通过 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 正在运行。我怎么知道?因为它拒绝了您的密码。这很清楚。
现在你真正的问题可能是你需要在修改 pg_hba.conf 后重新启动 PostgreSQL 才能给你信任访问权限。然后,您可以:
ALTER USER foo WITH PASSWORD 'bar';
关于启动和重启PostgreSQL,请看这个问题:如何在Mac OS X上启动PostgreSQL服务器?
评论
您遇到的错误是因为您的主机已损坏。检查您的文件。/etc/hosts
放在主机的第一行。127.0.0.1 localhost
评论
Linux:通过在命令行中运行 来确保环回接口已启动。如果它没有启动,你可以用它来调出它。 ifconfig
/sbin/ifconfig lo 127.0.0.1
评论
可能不是你的坏了。这可能是其他破坏DNS查找的东西,即使正确的行在/etc/hosts
中。/etc/hosts
localhost
检查一下你是否得到了结果。另请查看 。当用户 Postgres 运行时,也要检查这些内容。nslookup localhost
127.0.0.1
getent hosts localhost
评论
hosts
/etc/nsswitch.conf
在这种情况下,有多种方案和位置需要检查。因此迷路了一次。
通常的默认文件应如下所示:hosts
[root@localmachine ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
要确认是否能够解决,请使用以下方法进行测试:localhost
ping
[root@localmachine ~]# ping localhost
检查并确认是否存在:cat /etc/nsswitch.conf|grep hosts
files
# hosts: files dns
# hosts: files dns # from user file
#hosts: db files nisplus nis dns
hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
检查文件的权限,它应该是(所有进程/用户都可以读取):/etc/hosts
644
[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/
我已经提到了我是如何检查并得出结论的。
您之前是否安装了其他版本的 Postgres?就我而言,我试图执行:
sudo systemctl restart postgresql
这是不正确的!! 最后我找到了正确的一个:
sudo systemctl restart postgresql-12
我有两个版本的 Postgres......
重新启动计算机为我解决了错误。
评论
我知道这是一个很老的问题,但我想先发布对我有用的东西,我在任务管理器上结束了每个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 上运行的其他项目。请注意。
评论
无法创建 TCP/IP 连接或无法连接到本地主机
TCP/IP 重置有助于在一整天使用几种不同的技术后解决问题。事实证明,由于TCP / IP配置错误,问题出在我的PC上。
我使用以下命令来实现重置。
- 重置 Windows 套接字目录 (winsock)。您可以在 winsock 上阅读更多内容
netsh winsock reset catalog
- 重置 TCP/IP:
netsh int ip reset
然后,您将重新启动PC/系统,以便配置重置可以工作。
如果您无法理解这一点,请观看 Landon Johnson 频道上的视频解释
评论
Is another postmaster already running on port 5432?
- 嗯,是吗?lsof -i -n -P | grep 5432
nc localhost 5432
ps auxw | grep postgres