我是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
提前谢谢!
答案 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帐户)上定义的user
和password
。您的同事需要为您提供可用于连接的凭据。他们应该拥有专门为您创建的用户,或者您可以使用其凭据的共享用户。
不应仅仅按照您说明的方式连接到服务器时需要特殊配置。只需通过上述方法之一在cmdline和密码上指定用户。
对于psql
(即Postgres
的客户端方面而非服务器)真正重要的主配置文件是.psqlrc
,您可以在其中为psql会话定义各种设置和自定义。
注意:强>
对于某些操作,需要特殊的排序配置。例如,某些Postgres
操作需要超级用户角色,因此在这种情况下您需要使用特殊的superuser
用户登录,但对于基本的操作,只要您登录的用户具有访问权限到你想要连接的数据库,应该没问题。
同时强>
上面的psql
命令最后需要database target
。它可能是默认的template1
数据库,例如,如果您要创建新数据库并使用该数据库,则在创建该数据库之后,您可以将连接切换到该新数据库。