我是postgresql的新手(pg)。据我所知,为了与pg交互,我必须使用psql.exe。
在我的系统中,我发现psql.exe不是一次,而是两次,为什么? (C:\Program Files (x86)\pgAdmin 4\v2\runtime\psql.exe
和C:\Program Files\PostgreSQL\10\bin\psql.exe
)。我试过两个,结果相同(负面)。
与Q / A In PostgreSQL why does command line window disappear when I press Enter after entering my password?一致,我现在不是直接运行psql.exe,而是先打开一个通用(Windows)命令窗口,然后在这个通用命令窗口中运行psql.exe;然后我输入了密码并输入。
在通用(Windows)命令窗口中,我现在收到消息:
psql:无法连接到服务器:权限被拒绝(0x0000271D / 10013)
的密码验证失败
服务器是否在主机上运行" localhost" (:1)并接受端口5432上的TCP / IP连接? 致命:用户"用户"
这对应于上面引用的Q / A中描述的问题(但未解决)。此论坛中的其他主题re pg密码失败涉及密码更改后的Linux /过期密码/新密码。
它在其他帖子中说过这个问题,在Windows中,有一个文件pgpass.conf
。我找到一个帮助文件libpq-pgpass.html,它也说,在我的系统上,没有这样的文件pgpass.conf(或其他任何" pgpass"除了前面提到的html文件)。 / p>
(W10教授64位英语)
第二战略:
在StartMenu中,有一个条目" PostgreSQL&#34 ;;在那下 - 由Enter提供 - 有一个子条目" SQL Shell(psql)&#34 ;;所以我试过了。
仅从那里,我得到了Windows cmd窗口,其中包含" psql 10.1"并且(在[]中显然是默认值):
Server [localhost]: I enter localhost; Database [postgres]: I enter postgres; Port [5432]: I enter 5432; Username [postgres]: I enter postgres; Password for user postgres: I enter the password which is "a".
从那里,我得到一个警告,控制台代码页与Windows代码页不同,但我得到了psql提示
postgres=#
哪个有效。
另一方面,通过上面的第一个策略,我只得到"密码:"然后,在输入真实密码(即" a")之后,"致命"错误"用户" A""。
的密码验证失败安装完成后,我创建了一个超级用户" postgres"用密码" a"而不是用户" A&#34 ;;另一方面,我是用户" A"这是我的Windows管理员(!)帐户(我的电脑上没有其他用户)和我通常得到的cmd提示符(" C:\ Users \ A>"); (但正如预期的那样)如果我从提示符输入psql.exe的完整路径,那么没有不同的结果" C:>"。
所以我的问题现在归结为:当从开始菜单中触发时,psql.exe正常工作,因为它询问了我可以正确回答的所有问题(如上所述),而当它以完整路径启动时从cmd窗口(两个完整路径尝试并包含在""当然)中,它只是要求输入密码"然后告诉我,对于一些"用户A",该密码是错误的。
此外,开始菜单中(运行)psql.exe的完整路径是C:\ProgramData\Microsoft\Windows\Start Menu\Programs\PostgreSQL 10\psql.exe
,如果我尝试使用cmd窗口运行它,我会得到"(路径)不被识别为内部或外部命令,可操作程序或批处理文件。",因为在那里,它的SQL Shell(psql).lnk",其属性是:"目标:" C:\ Program Files \ PostgreSQL \ 10 \ scripts \ runpsql.bat""。
所以这是解决方案,请参阅下面的答案。
答案 0 :(得分:6)
您不运行某些psql.exe文件,而是运行文件C:\ Program Files \ PostgreSQL \ 10 \ scripts \ runpsql.bat,例如以编程方式运行,例如来自AHK:
运行,“C:\ Program Files \ PostgreSQL \ 10 \ scripts \ runpsql.bat”
然后你会得到一个通用的Windows命令窗口,它会询问你正确的问题(见上文),并在正确回答时为你提供psql命令提示符。
答案 1 :(得分:0)
首先打开命令提示符(Winkey+R
),然后键入C:\Program Files\PostgreSQL\10\bin\psql.exe
,然后按Enter键并输入密码。这与您在收到错误后未关闭psql.exe
时所做的不同。
看到错误后,请仔细阅读并查找SO或google(甚至是手动文档)中的解决方案。如果你仍然失败 - 发布另一个问题。