我有以下代码连接到远程服务器上的数据库(连接脚本驻留在同一台服务器上):
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 数据库可以正确配置为仅连接经过身份验证的用户,甚至是来自特定 IP/套接字的特定用户(Postgres 中的角色)。
一些注意事项:
你看到数据了吗?或者你可以直接连接到服务器吗?你能列出数据库吗?
看看你的pg_hba.conf并设置适当的权限,每个角色每个数据库每个来源
您是否向所有人授予了访问
mydatabase
的权限?您授予了哪些角色访问权限?数据库在公共(public)方案中有表吗?并授予公众访问权?
是的,使用此配置,每个知道您的 IP 和数据库名称的人都可以连接到您的数据库。
关于postgresql - Postgres 接受任何密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21054549/