【发布时间】:2014-09-25 08:39:15
【问题描述】:
我无法使用 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。
【问题讨论】:
-
我无法远程连接到 psql:你甚至没有尝试使用
host=localhost,除非你设置了一个你没有告诉的 SSH 隧道. -
那么,“服务器是否在主机“localhost”(::1) 上运行并接受端口 5432 上的 TCP/IP 连接?”?
-
@DanielVérité 我发现新用户在谈论 ssh 到一个盒子时似乎会说“远程服务器”,然后从远程机器上运行的代码连接到一个同一远程主机上的数据库。它对他们来说是一个“远程服务器”,即使远程性与数据库连接的目的无关。这可能是这样的情况,按照最后的注释。
-
@IpsIds 您是否通过 ssh 进入远程服务器并在那里运行该 Python 代码?还是在您的计算机上运行,而不是在远程服务器上运行?
-
@CraigRinger,代码在我的电脑上本地运行。
标签: python postgresql psycopg2