【发布时间】:2014-01-09 06:10:19
【问题描述】:
我发现我的 posgresql 数据库服务器在通过 pgadmin 远程连接时没有询问用户 postgres 的密码。 我的意思是当我通过 pgAdmin 从本地计算机连接到远程数据库服务器时。
我确实在 psql 中添加了密码,ALTER USER postgres PASSWORD 'mypassword'。
这是我的 pg_hba.config 文件:
/usr/local/pgsql/bin/psql -qAt -c "show hba_file" | xargs grep -v -E '^[[:space:]]*#'
local all all trust
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
host all all ::1/128 md5
所以,我不太明白这里发生了什么。
有人可以帮忙吗?
非常感谢。
更新:
如果我改变:
local all all trust
到
local all all md5
现在,本地连接(通过 SSH)将被要求输入密码(之前没有要求输入密码。)但远程连接仍将在没有密码的情况下连接。
实际上,我尝试通过来自另一台服务器的 rails 应用程序连接到这个数据库服务器,没有密码,并且 rails 服务器启动没有问题。
为了方便起见将结果放在这里
这个问题的真正原因是.pgpass 文件。 Mac 将密码本地存储在用户主文件夹下的.pgpass 文件中。然后每次用户尝试不使用密码登录时,PostgreSQL 都会为用户发送密码。
官方文档here
【问题讨论】:
-
默认情况下,据我所知,postgresql 是在没有密码的情况下安装的。你必须添加它。我确定文档会说如何。
-
我确实在 psql 中添加了密码,
ALTER USER postgres PASSWORD 'mypassword'。 -
是什么让您认为您在 PgAdmin 中进行远程连接?您是否明确指定 host =
127.0.0.1或从远程主机连接?如果您使用您的配置通过 unix 套接字连接,则不应出现密码提示,因为您使用的是trust模式 ffor unix 套接字 (local)。 -
@CraigRinger 我正在从我的本地计算机连接到远程数据库服务器。
-
您能否提供更多有关您如何远程连接的详细信息?您最初的帖子让我相信您的意思是在您的 SSH 会话中。