我有以下代码连接到我的远程服务器上的数据库(连接脚本驻留在同一台服务器上):
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服务器答案 0 :(得分:9)
当然,您的postgresql数据库可以正确配置为仅与特定用户(Postgres中的角色)中的某些IP /套接字连接经过身份验证的用户。
一些注意事项:
你看到数据吗?或者你可以连接到服务器?你能列出数据库吗?
查看您的pg_hba.conf并根据每个数据库的每个角色设置适当的权限
您是否向所有人授予了对mydatabase
的访问权限?您授予哪些角色访问权限?
数据库是否在公共方案中有其表格?并获准进入公众?
是的,使用此配置,知道您的IP和数据库名称的每个人都可以连接到您的数据库。