postgresql - Postgresql 远程访问没有主机的 pg_hba.conf 条目
问题描述
我正在尝试远程访问安装在 IP AAAA 的服务器上的 postgresql 有两台服务器,其中一台具有 IP AAAA,其中安装了 postgresql;另一个有IP BBBB
我已经编辑/etc/postgresql/10/main/pg_hba.conf
并添加了以下几行
host my_db db_user B.B.B.B/32 md5
host my_db db_user A.A.A.A/32 md5
我还编辑/etc/postgresql/10/main/postgresql.conf
并设置listen_addresses
为'*'
,如下所示:
#---------------------------------------------------------------------
---------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
listen_addresses = '*' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5432 # (change requires restart)
max_connections = 100 # (change requires restart)
我还允许通过 ufw 中的端口 5432 进行连接:
5432 ALLOW Anywhere
5432 (v6) ALLOW Anywhere (v6)
现在,如果我在服务器 A 中(安装了 postgres)并执行 psql"postgresql://db_user:password@A.A.A.A:5432/my_db"
它连接正常。但是,如果我使用 IP BBBB 从服务器执行此操作,则会收到此错误:
psql: FATAL: no pg_hba.conf entry for host "B.B.B.B", user "db_user", database "my_db", SSL on
FATAL: no pg_hba.conf entry for host "B.B.B.B", user "db_user", database "my_db", SSL off
我真的不明白错误在哪里。两个条目pg_hba.conf
看起来相同,但一个有效,另一个无效。
解决方案
我在 Docker 上的 PostgreSQL 实例也有类似的问题。我花了几个小时来弄清楚如何解决它。我分享我的经验,希望能帮助其他面临同样问题的人。有两个pg_hba.conf
文件具有以下路径:
/var/lib/postgresql/data/pg_hba.conf
/etc/postgresql/12/main/pg_hba.conf
我正在修改第一个,但不知道第二个。我使用了一个技巧来检查我是否正在处理正确的文件。我注释掉了文件的所有行并重新启动了 PostgreSQL 服务。然后我看到我仍然能够从 Docker 容器内部连接到 PostgreSQL 服务。然后我寻找另一个名称相似的文件,所以我找到了第二个。我修改/etc/postgresql/12/main/pg_hba.conf
,通过运行重启PostgreSQL service postgresql restart
,修改生效。
推荐阅读
- android - CircleImageView 与 kotlin 中的 volley NetworkImageView 在布局中给出 android.view.InflateException
- node.js - JSON 不呈现日志堆栈跟踪
- python - 如何同时运行带有 for 循环的 odeint 函数?
- css - Bootstrap 4下拉菜单出现在父级的右侧
- django - Django:如何在 API 视图中模拟一个类
- c# - Linq - 如何查询字典
- typescript - 如何为 some()、filter()、forEach() 禁用 @typescript-eslint/explicit-function-return-type?
- outlook-web-addins - 如果扩展名是大写,Outlook OfficeJS API 无法解析内容类型
- ruby-on-rails - 尝试在多态关联上创建项目时键不正确
- javascript - 为什么 Django 没有检测到我在 javascript fetch POST 请求中发送的数据?