2

我正在尝试使用 putty 从我的 Windows pc 连接到远程 ubuntu 12.04 服务器上的 Postgresql 9.1 数据库。我已经创建了带有密码的用户,当我运行命令时

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 中,我通过取消注释 listen_addresses = '*' 进行了更改,我知道我在这里遗漏了一些东西。需要您的帮助才能知道我还需要更改什么才能连接到服务器。

感谢您的帮助

4

3 回答 3

8

解决这个问题的一个技巧是编辑 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
于 2014-09-16T16:31:43.217 回答
1

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

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

hostname:port:database:username:password

如果没有.pgpass文件被创建,你应该创建一个。参看。postgresql文档供参考

于 2013-11-04T22:38:04.230 回答
1

回复有点晚,但它是这样的:

首先,您的.pgpass文件应该在您的 Ubuntu 用户的主目录中。如果没有文件,您可以创建它nano ~/.pgpass

其次,您的文件应该包含这种格式hostname:port:database:username:password。不要忘记,chmod 0600 ~/.pgpass这样您就可以禁止对世界或组的任何访问,如此所述。

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

-h是你的host

-w是使用您的 .pgpass 文件,以防您不想输入密码。或者用于-W强制 psql 提示密码。

-U是您的 postgres 用户名。

-d是您的数据库名称。

并且-c是执行一个字符串sql命令。

于 2018-07-11T12:53:04.760 回答