首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问远程vm上的postgreSQL 13数据库

访问远程vm上的postgreSQL 13数据库
EN

Stack Overflow用户
提问于 2021-06-25 16:09:54
回答 2查看 354关注 0票数 0

我正在尝试查询一个驻留在远程centos (redhat 7)虚拟机上的redhat 7实例。

以下代码:

代码语言:javascript
运行
复制
import pandas as pd, sqlalchemy

engine = sqlalchemy.create_engine('postgresql://postgres:projectpassword@ip_address_of_vm/project')
df = pd.read_sql_table('test_table', engine)

print(df)

ip_address_of_vmens192 inet地址。

在以下方面的成果:

代码语言:javascript
运行
复制
psycopg2.OperationalError: could not connect to server: Connection timed out (0x0000274C/10060)
        Is the server running on host "ip_address_of_vm" and accepting
        TCP/IP connections on port 5432?

如果我从我的主机( ping ip_address_of_vm )计算机(Windows 10),我收到答复,没有丢包。

在vm内部,我可以运行psql -U postgres并输入projectpassword,并且可以正确地登录到数据库中。

我的pg_hba.conf看起来像:

代码语言:javascript
运行
复制
|  TYPE |   DATABASE  | USER |    ADDRESS   | METHOD |
|:-----:|:-----------:|:----:|:------------:|:------:|
| local |     all     |  all |              |   md5  |
|  host |     all     |  all | 127.0.0.1/32 |   md5  |
|  host |     all     |  all |    ::1/128   |   md5  |
| local | replication |  all |              |   md5  |
|  host | replication |  all | 127.0.0.1/32 |   md5  |
|  host | replication |  all |    ::1/128   |   md5  |
|  host |     all     |  all |   0.0.0.0/0  |   md5  |
|  host |     all     |  all |     ::/0     |   md5  |

注意,在this question之后,我在listen_addresses = '*'文件中取消了注释,但是发出:psql -h ip_address_of_vm -p 5432 project -U postgres -W会产生:

psql: error: could not connect to server: Connection Timed out

如何连接远程vm上的postgres实例?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-25 16:51:25

您目前在hba.conf文件中没有任何允许的远程连接。

所有这些连接都是本地的(从同一虚拟机连接到数据库的IE)。为了允许连接,您需要添加如下内容:

主机,全,ip_of_remote_machine,md5,

我的看上去像:主机\均\x{e76f}\ md5

它允许我在.32 IP上的桌面计算机连接到驻留在不同IP地址上的虚拟机。

https://www.postgresql.org/docs/9.6/auth-pg-hba-conf.html

票数 0
EN

Stack Overflow用户

发布于 2021-06-25 16:52:02

这闻起来像防火墙,对我来说不是离题问题。应采取以下步骤:

  1. 检查远程机器上的后置进程实际上正在侦听0.0.0.0/0 (例如netstat -lnp | grep postg或类似的东西)。
  2. 确保在本地机器上,您不会看到远程的后置端口是打开的(nmap ip_address_of_vm -如果它是打开的,回到故障排除后的settings.)
  3. Check,即允许数据包从网络接口获取到本地进程(iptables -L INPUT)
  4. Check,从本地到远程计算机(traceroute ip_address_of_vm )的路径,并在每个中间跳上查看是否启用了防火墙。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68134068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档