gpt4 book ai didi

postgresql - 默认的 postgres 用户和密码

转载 作者:行者123 更新时间:2023-11-29 11:55:29 29 4
gpt4 key购买 nike

我只是 postgresql 数据库管理的新手。我一直在玩我没有创建的数据库。试图了解已创建的不同角色。

我可以通过以下操作登录是否意味着 postgres 用户没有设置密码?

psql -U postgres 

我做了一个

`select * from pg_roles`

我可以看到设置了密码。我找到了这篇文章:http://www.postgresql.org/message-id/4D958A35.8030501@hogranch.com这似乎确认默认情况下 postgres 用户在那里......并且您必须明确设置密码。这是关于我不确定的密码的第二部分。默认情况下它是空白还是设置为某些内容?

我知道如果 pg_hba.conf 被设置为信任来自 127.0.0.1 的所有内容,那么您可以从本地服务器登录而无需指定密码。这可能就是我的情况……我将通过更改 pg_hba.conf 文件进行测试……但最好知道 postgres 用户的默认密码是什么。

谢谢。

最佳答案

pg_roles 不是可以判断用户是否有密码的 View ,因为密码字段始终设置为 *********无论如何。

这来自此 View 的定义(取自版本 9.3):

select definition from pg_views  where viewname='pg_roles';

结果:

  SELECT pg_authid.rolname,     pg_authid.rolsuper,     pg_authid.rolinherit,     pg_authid.rolcreaterole,     pg_authid.rolcreatedb,     pg_authid.rolcatupdate,     pg_authid.rolcanlogin,     pg_authid.rolreplication,     pg_authid.rolconnlimit,     '********'::text AS rolpassword     pg_authid.rolvaliduntil,     s.setconfig AS rolconfig,     pg_authid.oid     FROM (pg_authid    LEFT JOIN pg_db_role_setting s      ON (((pg_authid.oid = s.setrole) AND (s.setdatabase = (0)::oid))));

Note how the rolpassword column is hardcoded to reveal nothing (We may wonder why it's there at all. Maybe for backward compatibility?)

On the other hand , there is a pg_shadow view that displays passwords as they're stored, in a column named passwd. This view is only readable by a superuser (typically: the postgres user).

Example:

create user foo unencrypted password 'foopassword';
create user bar encrypted password 'foopassword';
select usename,passwd from pg_shadow where usename in ('postgres','foo','bar');

普通 Debian 安装的结果:

 usename  |               passwd                ----------+------------------------------------- postgres |  foo      | foopassword bar      | md50390570d30cb9a2f9cb7476f0763cf51

最初 postgres 密码通常是空的,除非在 Windows 上安装程序倾向于要求它。在 Unix 上,pg_hba.conf 通常设置为只有操作系统用户 postgres 可以通过 Unix 套接字域作为数据库用户 postgres 登录没有密码。作为默认安全策略,这是合理的。 Windows 没有 Unix 域套接字,最新版本的安装程序甚至不使用 postgres 操作系统用户,因此它实现不同的默认安全策略是有道理的。

如果密码为空并且 pg_hba.conf 需要输入连接的特定数据库/用户/来源的密码,则连接将被拒绝。空白密码和缺少密码之间没有区别。

关于postgresql - 默认的 postgres 用户和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20082673/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com