【问题标题】:Postgres accepts any passwordPostgres 接受任何密码
【发布时间】:2014-01-30 00:43:28
【问题描述】:

我有以下代码连接到我的远程服务器上的数据库(连接脚本驻留在同一台服务器上):

Database::$ErrorHandle = new PDO('pgsql:host=111.222.33.44;dbname=mydatabase;', 'postgres', 'mypassword', $db_settings);

问题是我可以将密码更改为任何内容,并且仍然可以建立连接!真的是什么鬼!?!

任何人都可以通过在不同服务器上运行的 PHP 脚本连接到我的数据库(前提是您知道 IP 和数据库名称)吗?

如何强制使用密码,我查看了以下堆栈溢出页面并按照他们所说的做了,但仍然没有运气: How to change PostgreSQL user password?

我正在运行带有 PHP 5.5 和 Apache2 的 Ubuntu 12.04 服务器

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    当然,您的 postgresql 数据库可以正确配置为仅与经过身份验证的用户连接,甚至是来自某些 IP/套接字的某些用户(Postgres 中的角色)。

    一些注意事项:

    • 您看到数据了吗?或者你可以连接到服务器吗?你能列出数据库吗?

    • 查看您的 pg_hba.conf 并设置适当的权限,每个角色每个数据库每个源

    • 您是否将mydatabase 的访问权限授予所有人?您授予了哪些角色访问权限?

    • 数据库是否在公共方案中有其表?并授予公众访问权限?

    • 是的,通过此配置,知道您的 IP 和数据库名称的每个人都可以连接到您的数据库。

    【讨论】:

    • 谢谢。我查看了 pg_hba.conf 并注意到这一行 host all all 111.222.33.44/24 trust 并将其更改为 host all all 111.222.33.44/24 md5 现在我的密码按预期工作。如果允许,我会将您的答案标记为正确。
    • 很高兴为您提供帮助。您只想允许本地连接吗?或者您是否希望远程用户使用数据库(使用正确的凭据?)如果是这样,请查看 local 行而不是基于主机的连接。
    • 只有我可以访问服务器(希望如此),所以我不太担心远程连接。像我这样的基于host 的连接是什么?那么您是说local 行正在处理远程连接吗?好像有点像谎言……(虽然我很确定这不是谎言而且我只是个白痴哈哈)
    • 本地 = 本地连接/套接字; host tcp/ip 连接。如果您只从服务器运行的机器访问您的数据库(例如通过您的 WP 站点),请不要使用主机行。因此,如果您不需要远程 IP 连接到您的数据库服务器,请评论主机行!
    • 好的,我现在就这样做。 peer 是什么意思?
    猜你喜欢
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 2017-06-25
    • 2020-08-10
    • 2017-03-02
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多