PostgreSQL远程访问错误

时间:2014-05-14 03:59:40

标签: macos postgresql

我是PostgreSQL的新手。 现在我尝试使用psql命令在PostgreSQL(9.3.3)中访问远程数据库,如:

:~ tomohitoy$ psql -U root -h [my remote host's ip address]

然而,这会返回错误消息,如:

psql: FATAL:  password authentication failed for user "root"

在MacOSX 10.9.2中,PostgreSQL由自制程序安装,运行PostgreSQL。

postgresql.conf(local)中的

listen_addresses = '*'

在pg_hba.conf(本地)

host  all  all  [my remote host's ip address]  trust

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您没有在命令行中指定密码提示,因此您需要在 root 用户的 PGPASSWORD 环境变量中指定密码提示。您也可以使用-W选项让psql提示您输入密码。

这假设您已在postgres中定义了 root 用户并设置了密码。

还有.pgpass个文件:http://www.postgresql.org/docs/9.3/static/libpq-pgpass.html

修改OP评论中的因子:

如果您的Postgres服务器上没有名为 root 的用户,那么这将是近端问题。用于连接Postgres的用户和密码必须存在于您要连接的Postgres实例中。

您在安装过程中至少应该创建一个用户(很可能称为 postgres ,尽管它可能是其他用户)。

您还可以在Postgres中创建新用户(角色): http://www.postgresql.org/docs/9.3/static/app-createuser.html

在OP的附加评论中编辑2因子

如果您在下面概述 - 连接到同事的远程Postgres服务器 - 那么您的本地Postgres服务器根本不重要,因为您不是(使用该服务器)命令)试图连接它。

您需要使用在您尝试连接的远程Postgres服务器(不是* nix帐户)上定义的userpassword。您的同事需要为您提供可用于连接的凭据。他们应该拥有专门为您创建的用户,或者您可以使用其凭据的共享用户。

不应仅仅按照您说明的方式连接到服务器时需要特殊配置。只需通过上述方法之一在cmdline和密码上指定用户。

对于psql(即Postgres客户端方面而非服务器)真正重要的主配置文件是.psqlrc,您可以在其中为psql会话定义各种设置和自定义。

注意:

对于某些操作,需要特殊的排序配置。例如,某些Postgres操作需要超级用户角色,因此在这种情况下您需要使用特殊的superuser用户登录,但对于基本的操作,只要您登录的用户具有访问权限到你想要连接的数据库,应该没问题。

同时

上面的psql命令最后需要database target。它可能是默认的template1数据库,例如,如果您要创建新数据库并使用该数据库,则在创建该数据库之后,您可以将连接切换到该新数据库。