PowerShell中的这个PSQL语句:
.\psql --% -h localhost -p 5000 -U postgres -d mydatabase -c `
(SELECT * ...... do something);
工作 - 并且不提示输入密码。
.\psql.exe --help
说明没有密码需要-w开关。
为什么这个命令在没有密码的情况下工作?数据库有密码。
该命令在没有密码验证的PSQL交互式shell中不起作用,仅在PowerShell中。
答案 0 :(得分:3)
-w
从我的man psql
-w
--no-password
永远不会发出密码提示。 如果服务器需要密码验证,并且其他方式(例如.pgpass文件)无法使用密码,则连接尝试将失败。此选项在批处理作业和没有用户的脚本中非常有用。输入密码。请注意,此选项将保持为整个会话设置,因此它会影响元命令\ connect的使用以及初始连接尝试。
-w
适用于运行psql脚本时,无法输入密码,例如在无头会话中。
为什么这个命令在没有密码的情况下工作?数据库有密码。
即使数据库具有密码,如果您的pg_hba.conf
文件信任,也不需要密码。要进一步调试,我们需要查看您的pg_hba.conf
。