Postgres 接受任何密码
Posted
技术标签:
【中文标题】Postgres 接受任何密码【英文标题】:Postgres accepts any password 【发布时间】: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 服务器
【问题讨论】:
【参考方案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
是什么意思?以上是关于Postgres 接受任何密码的主要内容,如果未能解决你的问题,请参考以下文章