psycopg2 从 Windows 连接,但不能从 Ubuntu 连接
我的 Postgres 数据库仅接受来自本地主机的请求。来自远程计算机的请求依赖于 SSH 隧道。
with SSHTunnelForwarder(
('my.db.ip.address', 22),
ssh_username='ssh_user_name',
ssh_private_key='id_rsa.pem',
remote_bind_address=('127.0.0.1', 5432)) as server:
conn = psycopg2.connect(database="my_db", port=server.local_bind_port, user=id, password=pwd)
curs = conn.cursor()
sql = "select t.id from public.my_table t"
此代码适用于 Windows 机器。在 Ubuntu 上它失败了,
File "/home/me/projects/compliance/response_generator.py", line 22, in get_rows
conn = psycopg2.connect(database="my_db", port=server.local_bind_port, user=id,password=pwd)
File "/home/me/anaconda3/envs/my_env/lib/python3.8/site-packages/psycopg2/__init__.py", line 122, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: connection to server on socket "/tmp/.s.PGSQL.38945" failed: No such file or directory
Is the server running locally and accepting connections on that socket?
原因是什么以及如何修复它?
----更新-----
tunnel = SSHTunnelForwarder(
('my.db.ip.address', 22),
ssh_username='ssh_user_name',
ssh_private_key='exdtras.dat',
remote_bind_address=('localhost', 5432),
local_bind_address=('localhost',6543), # could be any available port
返回 raise ValueError('No password or public key available!') ValueError: No password or public key available!
知道为什么这段代码可以在 Windows 上运行,但是Ubuntu 上失败?
My Postgres database only accepts requests from localhost. Requests from a remote computer rely on SSH tunnel.
with SSHTunnelForwarder(
('my.db.ip.address', 22),
ssh_username='ssh_user_name',
ssh_private_key='id_rsa.pem',
remote_bind_address=('127.0.0.1', 5432)) as server:
conn = psycopg2.connect(database="my_db", port=server.local_bind_port, user=id, password=pwd)
curs = conn.cursor()
sql = "select t.id from public.my_table t"
This code works from Windows machine. On Ubuntu it fails with
File "/home/me/projects/compliance/response_generator.py", line 22, in get_rows
conn = psycopg2.connect(database="my_db", port=server.local_bind_port, user=id,password=pwd)
File "/home/me/anaconda3/envs/my_env/lib/python3.8/site-packages/psycopg2/__init__.py", line 122, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: connection to server on socket "/tmp/.s.PGSQL.38945" failed: No such file or directory
Is the server running locally and accepting connections on that socket?
What could be the reason and how to fix it?
----Update-----
tunnel = SSHTunnelForwarder(
('my.db.ip.address', 22),
ssh_username='ssh_user_name',
ssh_private_key='exdtras.dat',
remote_bind_address=('localhost', 5432),
local_bind_address=('localhost',6543), # could be any available port
Returns raise ValueError('No password or public key available!') ValueError: No password or public key available!
Any idea why this code works on Windows, but fails on Ubuntu?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论