pgn*_*gny 7 windows postgresql psql
我是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一致在PostgreSQL中,为什么在输入密码后按Enter键时命令行窗口会消失?我现在,而不是直接运行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(或除了前面提到的html文件之外的任何其他"pgpass").
(W10教授64位英语)
第二个策略:
在StartMenu中,有一个条目"PostgreSQL"; 在那下 - 由Enter提供 - 有一个子条目"SQL Shell(psql)"; 所以我试过了.
从那里,我得到Windows cmd窗口,"psql 10.1"和(在[]中显然是默认值):
Run Code Online (Sandbox Code Playgroud)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=#
Run Code Online (Sandbox Code Playgroud)
哪个有效.
另一方面,根据上面的第一个策略,我只得到"密码:"然后,在输入真实密码(即"a")之后,"致命"错误"用户密码验证失败"A"" .
安装后,我创建了一个超级用户"postgres",密码为"a",而不是用户"A"; 另一方面,我是用户"A",这是我的Windows管理员(!)帐户(我的电脑上没有其他用户)和我通常得到的cmd提示符("C:\ Users\A>"); (但正如预期的那样)如果我从提示符"C:>"输入psql.exe的完整路径,则没有不同的结果.
所以我的问题现在归结为:当从开始菜单中触发时,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"".
所以这是解决方案,请参阅下面的答案.
您不运行某些psql.exe文件,而是运行文件C:\ Program Files\PostgreSQL\10\scripts\runpsql.bat,例如以编程方式运行,例如来自AHK:
运行,"C:\ Program Files\PostgreSQL\10\scripts\runpsql.bat"
然后你得到一个通用的Windows命令窗口,它会询问你正确的问题(见上文),并在正确回答时为你提供psql命令提示符.
首先打开命令提示符 ( Winkey+R),然后键入C:\Program Files\PostgreSQL\10\bin\psql.exe,然后按 Enter 并键入密码。这与您psql.exe在收到错误后不关闭所做的不同。
看到错误后,请仔细阅读并在SO或google(甚至手动文档)中寻找解决方案。如果您仍然失败 - 发布另一个问题。
要在 windows 下使用 psql.exe,你可能需要用postgres用户启动它
REM at the console of cmd.exe type
C:\PostgreSQL\bin>psql.exe -U postgres
REM this should result in this output
Password for user postgres:
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20371 次 |
| 最近记录: |