以postgres用户身份连接到PostgreSQL时出现连接错误?

2024-09-26 18:03:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我无法使用python和psycopg2远程连接PostgreSQL:

这是我的密码。

>>> import psycopg2
>>> conn_string = "host='localhost' dbname='mydb' user='postgres'"
>>> print "Connecting to database\n     ->%s" % (conn_string)
    Connecting to database
      ->host='localhost' dbname='mydb' user='postgres'
>>> conn = psycopg2.connect(conn_string)

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/tools/lib/python2.7/site-packages/psycopg2/__init__.py", line 164, in connect
conn = _connect(dsn, connection_factory=connection_factory, async=async)
psycopg2.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?

无法连接到服务器:连接被拒绝 服务器是否在主机“localhost”(127.0.0.1)上运行并接受 端口5432上的TCP/IP连接?

没有为postgres用户设置密码。

通常,我可以通过在主机上运行以下方法连接到数据库。

 1. SSH to box
 2. su - postgres
 3. psql
 4. \c mydb

服务器运行PostgreSQL 9.1。


Tags: to服务器localhosthost密码stringpostgresqlconnect
1条回答
网友
1楼 · 发布于 2024-09-26 18:03:31

您正在尝试使用计算机上运行的脚本连接到localhost上的PostgreSQL,但没有PostgreSQL服务器在运行。

为此,必须通过ssh连接到远程服务器,然后在那里运行Python脚本,其中PostgreSQL服务器相对于Python脚本是“本地的”。

(这就是运行psql的原因-因为您在远程服务器上运行它,其中PostgreSQL相对于psql是“本地的”。

或者,您可以:

  • 使用SSH隧道将PostgreSQL端口从本地计算机转发到远程计算机;或

  • 在服务器上启用远程连接后,使用其主机名或IP地址通过TCP/IP直接连接到远程PostgreSQL服务器。

请注意,仅将服务器的IP地址或主机名放入连接字符串而不是localhost将不起作用,除非您还将服务器配置为接受远程连接。必须设置listen_addresses以侦听非本地连接,添加任何必需的防火墙规则,设置pg_hba.conf以允许来自远程计算机的连接,最好设置SSL。所有这些都将在PostgreSQL用户手册的客户端身份验证一章中介绍。

您可能会发现SSH隧道更简单、更容易理解。

相关问题 更多 >

    热门问题