我正试图通过我的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 ='*' 我知道我在这里遗漏了一些东西。需要你的帮助才能知道我需要改变什么才能连接到服务器。
感谢您的帮助
答案 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命令。