我们在日志中看到了一个问题
FATAL: lock file "/tmp/.s.PGSQL.5432.lock" already exists
HINT: Is another postmaster (PID 4696) using socket file "/tmp/.s.PGSQL.5432"?
LOG: could not bind IPv4 socket: Address already in use
我们删除了/tmp/.s.PGSQL.5432.lock
我们重启了服务重启的postgres服务
但是psql -h localhost -d database -U newuser
显示错误角色'newuser'不存在
但如果我们连接没有主机
psql -d database -U newuser
它有效,我们如何使用主机选项?
我们是否在删除tmp文件后遗漏了某些内容?
答案 0 :(得分:0)
与上一个相同,你在机器上运行了两个PostgreSQL实例。
删除套接字文件而不是关闭实例。这允许您的第二个实例启动,但它只在侦听unix套接字。据推测,listen_addresses
未设置/为空,因此它不会尝试绑定到TCP / IP套接字,因为如果它尝试并且端口5432已在使用中,它将会失败。
另一个实例仍在运行,仍然在端口5432上侦听TCP / IP连接。当您指定-h localhost
时,您将获得TCP / IP连接而不是默认的unix套接字连接,因此您将连接到系统上的另一个PostgreSQL实例。
所有问题都是由于删除和删除事物而不是识别底层问题(第二个PostgreSQL实例)以及解决这个问题引起的。