AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 288914
Accepted
WillyC
WillyC
Asked: 2021-03-30 11:23:44 +0800 CST2021-03-30 11:23:44 +0800 CST 2021-03-30 11:23:44 +0800 CST

IMPORT FOREIGN SCHEMA 因 127.0.0.1 的密码错误而失败,但对于远程 IP(同一服务器的)却没有

  • 772

我在 Google SQL Cloud 中有一个带有多个数据库的 Postgres 服务器。我想在它们之间创建一个 FOREIGN DATA WRAPPER。如果我使用服务器的远程 IP 它可以工作:

CREATE SERVER "some_db_fdw" FOREIGN DATA WRAPPER postgres_fdw OPTIONS (host '34.94.1.23', dbname 'some_db');
CREATE USER MAPPING FOR some_user SERVER "some_db_fdw" OPTIONS (user 'some_user', password 'some_password');
IMPORT FOREIGN SCHEMA public LIMIT TO (my_table) FROM SERVER "some_db_fdw" INTO public;

...但如果我使用本地 IP(127.0.0.1)代替 34.94.1.23(仅限示例 IP),则会出现错误:

ERROR: password is required
DETAIL: Non-superuser cannot connect if the server does not request a password.
HINT: Target server’s authentication method must be changed.

为什么?我在用户映射中提供密码。实际上,如果我在此处省略密码,则错误将更改为:

ERROR:  password is required
DETAIL:  Non-superusers must provide a password in the user mapping.

所以它似乎知道它应该从用户映射中获取密码。

我不能只使用远程 IP 的原因是我们需要证书,所以如果我使用远程 IP 启用“仅允许 SSL 连接”失败,因为我在 psql 中没有证书(我在我连接的机器上有它们或者我根本无法连接,但由于此服务器位于 SQL Cloud 中,我没有任何文件系统访问权限,也无法为数据库本身提供连接到另一个数据库的证书 - 因此我尝试使用 127.0.0.1 来避免这个问题)。

postgresql google-cloud-sql
  • 2 2 个回答
  • 739 Views

2 个回答

  • Voted
  1. Best Answer
    jjanes
    2021-03-30T12:59:23+08:002021-03-30T12:59:23+08:00

    问题是当你在本地连接时,PostgreSQL 不需要密码。因此,虽然用户映射可能定义了一个密码,但该密码不能被使用,因为它从未被要求过。如果它不要求输入密码但仍然可以连接,那可能意味着它依赖于进行连接的进程的身份来对其进行身份验证。由于进行连接的进程由运行 PostgreSQL(通常为“postgres”)的服务帐户所有,因此您正在利用您无权利用的身份。出于安全原因,必须禁止这样做。

    由于您使用的是托管服务,因此您可以由主机来修复它。他们有几种方法可以解决这个问题。没有他们的合作,除了停止使用他们的服务之外,没有其他方法可以解决它。

    使用远程 IP 的“仅允许 SSL 连接”失败,因为我没有证书

    SSL 证书通常会有主机名,而不是主机 IP 地址。您是否尝试使用主机名?可能是谷歌自动安装了他们自己的证书(或者你可以说服他们这样做)

    • 3
  2. Akash Agarwal
    2022-01-18T16:40:25+08:002022-01-18T16:40:25+08:00

    基于jjanes 的答案——对于那些仍在您可以控制的环境中寻找答案的人,您需要local通过修改以下行来禁用对所有用户的信任pg_hba.conf:

    local   all             all                                trust
    

    至:

    local   all             postgres                                trust
    

    从那里开始,为您想要的本地用户和本地数据库和外部数据库的外部用户分别设置本地身份验证md5或任何其他密码身份验证机制。

    • 0

相关问题

  • 我可以在使用数据库后激活 PITR 吗?

  • 运行时间偏移延迟复制的最佳实践

  • 存储过程可以防止 SQL 注入吗?

  • PostgreSQL 中 UniProt 的生物序列

  • PostgreSQL 9.0 Replication 和 Slony-I 有什么区别?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve