psql:FATAL:用户密码验证失败

时间:2013-11-04 22:28:45

标签: postgresql

我正试图通过我的windows pc连接到远程ubuntu 12.04服务器上的Postgresql 9.1数据库,使用putty.i创建了用户密码,当我运行命令时

psql -U opentaps -d opentaps  (opentaps是我为数据库opentaps创建的用户) 我得到了以下的评论。 psql:致命:用户“opentaps”的密码验证失败 我确实尝试过psql -U opentaps -d opentaps -h localhost 但在提供密码后仍然是相同的消息。 我的opentaps用户的密码是正确的。即使我尝试 psql -U postgres -d postgres我收到相同的失败消息。

我在pg_hba.conf中进行了一些更改,看起来像这样

https://docs.google.com/document/d/13ymGYj9e7YPFiaffwixLzsWJygp_OfBmgBi4Axgrg5A/edit?usp=sharing

同样在postgresql.conf中我通过uncomenting进行了更改 listen_addresses ='*' 我知道我在这里遗漏了一些东西。需要你的帮助才能知道我需要改变什么才能连接到服务器。

感谢您的帮助

3 个答案:

答案 0 :(得分:6)

围绕这个问题就是编辑pg_hba.conf

sudo vi /etc/postgresql/9.3/main/pg_hba.conf

暂时

# Database administrative login by Unix domain socket
local   all             postgres                                   trust

然后去

sudo -u postgres psql template1
ALTER USER postgres with encrypted password 'your_password';

然后返回并将pg_hba.conf设置回

# Database administrative login by Unix domain socket
local   all             postgres                                   md5

答案 1 :(得分:1)

从命令行启动opentaps时,请确保以用户psql身份登录。

您还应该使用以下格式填写.pgpass文件中的正确信息:

hostname:port:database:username:password

如果没有创建.pgpass文件,则应创建一个。比照postgresql docs供参考

答案 2 :(得分:1)

有些迟到的反应,但是可以解决了

首先,您的.pgpass文件应位于Ubuntu用户的主目录中。如果没有文件,则可以使用nano ~/.pgpass

创建它

第二,您的文件应包含此格式hostname:port:database:username:password。不要忘记chmod 0600 ~/.pgpass,因为它禁止here,因此您可以禁止任何访问世界或群组的事情。

现在,命令应该是这样的:psql -h localhost -w -U opentaps -d opentaps -c "select * from mytable"。其中:

-h是您的host

-w用于使用.pgpass文件,以防您不想输入密码。否则,请使用-W强制psql提示输入密码。

-U是您的postgres用户名。

-d是您的数据库名称。

-c用于执行字符串sql命令。