当我执行heroku数据库:拉它find我的本地开发数据库在:
postgres://127.0.0.1/myapp_development?encoding=utf8
一旦我确认,但它失败:
Sequel::DatabaseConnectionError -> PGError: fe_sendauth: no password supplied
我试着运行与本地数据库指定的拉,例如
heroku db:pull postgres://root:@localhost/db_name
这给出了相同的没有密码提供的错误。
我想我可能需要更改根:myname:因为这是我授予超级用户权限,当我设置postgres的用户,但既不是root:或myname:工程
我的database.yml有指定的所有数据库的用户名和密码:空白。
从命令行myname @ ubuntu我可以键入psql myapp_development并连接正常,并运行select。
我在这里错过了什么?
它与我的pg_hba.conf设置有关吗? 我看了一下,它说:
# Database administrative login by UNIX sockets local all postgres ident # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all ident # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5
应该用“可信”吗? 如果是的话,如果我编辑该文件,我需要重新启动postgres? 如果'信任'是必要的,那么当我的myname用户login时,rails和psql命令行工具如何在没有密码的情况下工作?
谢谢!
身份验证方法trust
可能会诀窍,但正如您毫无疑问知道,这是不安全的。
编辑pg_hba.conf
,您不必重新启动。 reload
就足够了(引用手册 ):
启动时读取
pg_hba.conf
文件,并在主服务器进程收到SIGHUP信号时读取该文件。 如果您在活动系统上编辑文件,则需要通过postmaster(使用pg_ctl
reload或kill -HUP
)来重新读取文件。
pg_ctl reload
看到精美的手册 。 您可能需要8.3版本的手册。 Heroku上的共享数据库目前在PostgreSQL 8.3上运行。 (另外,我怀疑你有权访问heroku上的pg_ctl。)
请注意这一点 :
如果没有为用户设置密码 ,则存储的密码为空,并且密码验证将始终对该用户失败 。
强调我的。 您可以在本地登录,因为auth-methods ident
或peer
允许。 但为了您的目的,您可能需要密码!