如何让 psql 提示超级用户 postgres 输入密码?

paz*_*tov 7 postgresql authentication windows postgresql-9.6

我在 Windows 7 上使用 PostgreSQL 9.6.2,当我从命令提示符启动 psql 时:

psql -U myusername 
Run Code Online (Sandbox Code Playgroud)

它要求输入密码并登录。但是如果我这样做:

psql -U postgres
Run Code Online (Sandbox Code Playgroud)

它会以超级用户权限直接登录到主数据库,而无需输入任何类型的密码。如果我输入:

psql -U postgres -W 
Run Code Online (Sandbox Code Playgroud)

然后它会询问 su 密码,顺便说一下,这是我在一键安装过程中设置的密码。

我已经检查过了pg_hba.conf,它被设置md5为所有用户,所有数据库。我什postgres=# ALTER USER postgres PASSWORD 'myPassword';至用: 更改了数据库中的密码,但无济于事。

问题是为什么当我以普通用户身份登录时它要求输入密码而当我以超级用户身份登录时却没有?这不是主要问题,因为在任何一种情况下我都可以访问我的数据库,但它似乎根本不安全。任何解决方法将不胜感激。

Phi*_* W. 5

为什么当我以普通用户身份登录时它要求输入密码而当我以超级用户身份登录时却没有?

它似乎根本不安全。

您缺少的一个小而重要的细节是,除了您(或您的 DBA 团队)之外,任何人都应该被允许在数据库服务器附近任何地方,并且绝对不应该拥有 postgres 帐户凭据。没有这些,“无论有没有密码,以 postgres 身份登录”根本就不是他们的选择。

请记住:作为 DBA,您必须清理其他人制造的“混乱”,因此始终为自己保留最大和最好的工具!


Jam*_*las 1

根据 @a_horse_with_no_name 的评论,请查看您的pgpass.conf.pgpass在 Linux 上)文件(如果有),并查看是否有该postgres用户的条目:

用户主目录中的文件 .pgpass 或 PGPASSFILE 引用的文件可以包含在连接需要密码时要使用的密码(否则未指定密码)。在 Microsoft Windows 上,该文件名为 %APPDATA%\postgresql\pgpass.conf(其中 %APPDATA% 指用户配置文件中的应用程序数据子目录)。