linux 5432端口,无法连接到端口5432上的postgresql[通俗易懂]

linux 5432端口,无法连接到端口5432上的postgresql[通俗易懂]问题描述我安装了包含PostgreSQL8.4的BitnamiDjangostack。当我运行psql-Upostgres时,我收到以下错误:psql:couldnotconnecttoserver:NosuchfileordirectoryIstheserverrunninglocallyandacceptingconnectionsonUnixd…

大家好,又见面了,我是你们的朋友全栈君。

问题描述

我安装了包含PostgreSQL 8.4的Bitnami Django stack。

当我运行psql -U 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”?

PG肯定在运行,pg_hba.conf文件如下所示:

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# “local” is for Unix domain socket connections only

local all all md5

# IPv4 local connections:

host all all 127.0.0.1/32 md5

# IPv6 local connections:

host all all ::1/128 md5

是什么赋予了?

pg正在运行的”Proof”:

root@assaf-desktop:/home/assaf# ps axf | grep postgres

14338 ? S 0:00 /opt/djangostack-1.3-0/postgresql/bin/postgres -D /opt/djangostack-1.3-0/postgresql/data -p 5432

14347 ? Ss 0:00 \_ postgres: writer process

14348 ? Ss 0:00 \_ postgres: wal writer process

14349 ? Ss 0:00 \_ postgres: autovacuum launcher process

14350 ? Ss 0:00 \_ postgres: stats collector process

15139 pts/1 S+ 0:00 \_ grep –color=auto postgres

root@assaf-desktop:/home/assaf# netstat -nltp | grep 5432

tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 14338/postgres

tcp6 0 0 ::1:5432 :::* LISTEN 14338/postgres

root@assaf-desktop:/home/assaf#

最佳解决方案

此问题来自安装没有版本号的postgres软件包。虽然将安装postgres并且它将是正确的版本,但是设置群集的脚本将无法正确运行;这是一个包装问题。

如果您对postgres感到满意,可以运行一个脚本来创建此集群并运行postgres。但是,有一种更简单的方法。

首先清除旧的postgres安装。目前的问题在于9.1,所以我假设你已经安装了

sudo apt-get remove –purge postgresql-9.1

现在只需重新安装

sudo apt-get install postgresql-9.1

请注意包名称和版本号。 HTH。

次佳解决方案

错误消息是指Unix-domain套接字,因此您需要调整netstat调用以不排除它们。所以在没有选项-t的情况下尝试:

netstat -nlp | grep 5432

我猜想服务器实际上正在侦听套接字/tmp/.s.PGSQL.5432而不是客户端尝试连接的/var/run/postgresql/.s.PGSQL.5432。这是在Debian或Ubuntu上使用hand-compiled或third-party PostgreSQL软件包时的典型问题,因为Unix-domain套接字目录的源默认值为/tmp,但Debian打包将其更改为/var/run/postgresql。

可能的解决方法:

使用third-party软件包提供的客户端(致电/opt/djangostack-1.3-0/postgresql/bin/psql)。可能完全卸载Ubuntu-supplied软件包(由于其他反向依赖性,可能很难)。

修复third-party包的套接字目录以与Debian /Ubuntu兼容。

使用-H localhost通过TCP /IP进行连接。

使用-h /tmp或等效的PGHOST设置指向正确的目录。

不要使用third-party包。

第三种解决方案

您可以使用psql -U postgres -h localhost强制通过TCP而不是UNIX域套接字进行连接;您的netstat输出显示PostgreSQL服务器正在侦听localhost的端口5432。

您可以通过使用不同的netstat调用来找出PostgrSQL服务器使用的本地UNIX套接字:

netstat -lp –protocol=unix | grep postgres

无论如何,PostgreSQL服务器侦听的接口都在postgresql.conf中配置。

第四种方案

只需创建一个这样的软链接:

ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432

第五种方案

这对我有用:

编辑:postgresql.conf

sudo nano /etc/postgresql/9.3/main/postgresql.conf

启用或添加:

listen_addresses = ‘*’

重启数据库引擎:

sudo service postgresql restart

此外,您可以检查文件pg_hba.conf

sudo nano /etc/postgresql/9.3/main/pg_hba.conf

并添加您的网络或主机地址:

host all all 192.168.1.0/24 md5

第六种方案

我不得不在Debian Squeeze上编译PostgreSQL 8.1,因为我使用的是Project Open,它基于OpenACS,不会在更新版本的PostgreSQL上运行。

默认的编译配置将unix_socket放在/tmp中,但是依赖于PostgreSQL的Project Open将无法工作,因为它在/var/run/postgresql中查找unix_socket。

postgresql.conf中有一个设置来设置套接字的位置。我的问题是,我可以设置/tmp和psql工作,但不是项目打开,或者我可以设置它为/var/run/postgresql和psql不起作用,但项目打开。

该问题的一个解决方案是为/var/run/postgresql设置套接字,然后根据Peter的建议运行psql,如下所示:

psql -h /var/run/postgresql

这使用本地权限在本地运行。唯一的缺点是它比简单的”psql”打字更多。

有人提出的另一个建议是在两个地点之间建立一个符号链接。这也有效,但是重启后链接消失了。使用-h参数可能更容易,但是,我在/etc/init.d中的PostgreSQL脚本中创建了符号链接。我在”start”部分放置了symbolic link create命令。当然,当我发出一个停止并启动或重启命令时,它会尝试重新创建一个现有的符号链接,但除了警告信息之外,可能没有任何损害。

就我而言,而不是:

ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432

我有

ln -s /var/run/postgresql/.s.PGSQL.5432 /tmp/.s.PGSQL.5432

并在postgresql.conf中明确将unix_socket设置为/var/run/postgresql/.s.PGSQL.5432。

第七种方案

我通过这样做使它工作:

dpkg-reconfigure locales

选择首选语言环境然后运行

pg_createcluster 9.5 main –start

(9.5是我的postgresql版本)

/etc/init.d/postgresql start

然后它的工作原理!

sudo su – postgres

psql

第八种方案

解:

做这个

export LC_ALL=”en_US.UTF-8″

还有这个。 (9.3是我目前的PostgreSQL版本。写下你的版本!)

sudo pg_createcluster 9.3 main –start

第九种方案

在我的情况下,它是由我在编辑/etc/postgresql/9.5/main/pg_hba.conf时输入的拼写引起的

我变了:

# Database administrative login by Unix domain socket

local all postgres peer

至:

# Database administrative login by Unix domain socket

local all postgres MD5

但是MD5必须是小写的md5:

# Database administrative login by Unix domain socket

local all postgres md5

第十种方案

我用postgres-9.5服务器无法解决这个问题。经过3天的零进度尝试在这个和其他网站上的每个修复,我决定re-install服务器,并失去了5天的工作量。但是,我确实在新实例上复制了这个问题。这可能会提供一些关于如何解决它的观点,然后再采取我所做的灾难性方法。

首先,禁用postgresql.conf中的所有日志记录设置。这是部分:

# ERROR REPORTING AND LOGGING

评论该部分中的所有内容。然后重启服务。

重新启动时,使用/etc/init.d/postgresql start或restart我发现在重新启动时处于超级用户模式会很有帮助。我打开了一个x-window用于该操作。您可以使用sudo -i建立超级用户模式。

使用以下简单命令验证是否可以访问服务器:psql -l -U postgres

如果这不能解决问题,请考虑以下事项:

在尝试寻找解决方案时,我正在更改许多文件夹的所有权。我知道我可能会尝试将这些文件夹所有权和chmod还原2天。如果您已经搞乱了这些文件夹所有权并且不想完全清除服务器,那么请开始跟踪所有受影响文件夹的设置,以使其恢复到原始状态。您可能希望尝试在另一个系统上进行并行安装,并系统地检查所有文件夹的所有权和设置。单调乏味,但您可以访问您的数据。

获得访问权限后,系统地更改postgresql.conf文件的#ERROR REPORTING AND LOGGING部分中的每个相关行。重启并测试。我发现日志的默认文件夹导致失败。我特意评论了log_directory。系统删除日志的默认文件夹是/var /log /postgresql。

参考资料

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150950.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python快速排序法实现

    python快速排序法实现基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];3

    2025年6月18日
    3
  • C# List集合转Json字符串示例代码

    C# List集合转Json字符串示例代码将list集合转换为Json字符串简单实现代码:publicstaticstringGetJosn(List<CalendarInfo>list){stringjsonStr=”[“;if(list!=null&&list.Count>0)…

    2022年9月25日
    4
  • 常见逻辑漏洞[通俗易懂]

    常见逻辑漏洞[通俗易懂] 支付逻辑漏洞检测方法与案列支付漏洞一般分为三类,支付过程可直接修改数据包中的支付金额开发人员为了方便,导致支付的关键数据,能直接截包查看而重要的金额数据,在后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额.  没有对购买数量进行负数限制产生的原因是开发人员没有对购买的数量参数进行严格的限制,传输过程没有做签名,导致可随意修改,经典的修改方式就是…

    2022年5月4日
    41
  • git log 查看 当前分支的 提交历史[通俗易懂]

    git log 查看 当前分支的 提交历史[通俗易懂]gitlog查看当前分支的提交历史在提交了若干更新之后,想回顾下提交历史,可以使用gitlog命令查看默认不用任何参数的话,gitlog会按提交时间列出所有的更新,最近的更新排在最上面。看到了吗,每次更新都有一个SHA-1校验和、作者的名字和电子邮件地址、提交时间,最后缩进一个段落显示提交说明。gitlog有许多选项可以帮助你搜寻感兴趣的提交,接下来我们…

    2022年8月22日
    12
  • android 定时器的实现比较

    android 定时器的实现比较第一种,Handler+threadpublicclassMainActivityextendsActivity{TextViewtextView;inttime;Handlerhandler=newHandler(){@OverridepublicvoidhandleMessage(Messag

    2022年7月25日
    8
  • rabbit mq使用_rabbitmq部署

    rabbit mq使用_rabbitmq部署原文转载:http://blog.csdn.net/whycold/article/details/41119807推荐文章:SpringBoot+RabbitMq的使用一、简介MQ全称为MessageQueue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息…

    2022年10月3日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号