这是从命令行检查用户名/密码组合是否有效的便捷方法。这是从 puppetlabs-postgresql 模块中提取的:
su - username
env PGPASSWORD=somepass psql -h localhost -c 'select 1'
echo $?
...其中“somepass”是被测试的密码,“用户名”是被测试的帐户(通常是 postgres 用户本身)。
如果 $? 为 0,用户/密码组合有效。如果 $? 为1,密码错误或用户不存在。无论哪种方式,都有问题。
这就是 Linux/bash 的方式。Windows 方式大致如下:
(run under the user account you're interested in)
set PGPASSWORD=somepass
psql -h localhost -c 'select 1'
if errorlevel 1 (
echo Failure Reason Given is %errorlevel%
exit /b %errorlevel%
)
psql 上的 -h 强制建立基于 TCP 的本地连接,默认情况下(来自 pg_hba.conf)强制进行密码检查,无密码用户不可能绕过。
对于没有发布经过全面测试的 Windows 解决方案,我深表歉意,但上面的代码很有可能会直接运行,或者只需稍作修复即可。