Dav*_*ave 3 postgresql ubuntu ruby-on-rails heroku
当我执行heroku db:pull它找到我的本地dev db:
postgres://127.0.0.1/myapp_development?encoding=utf8
Run Code Online (Sandbox Code Playgroud)
一旦我确认,它失败了:
Sequel::DatabaseConnectionError -> PGError: fe_sendauth: no password supplied
Run Code Online (Sandbox Code Playgroud)
我尝试使用指定的本地数据库运行pull,例如
heroku db:pull postgres://root:@localhost/db_name
Run Code Online (Sandbox Code Playgroud)
这给出了相同的无密码提供错误.
我以为我可能需要更改root:to myname:因为那是我授予超级用户权限的用户,当我设置postgres但是root:或myname:works时
我的database.yml具有用户名:和密码:为指定的所有数据库为空.
从myname @ ubuntu的命令行我可以输入psql myapp_development并连接正常并运行选择.
我在这里错过了什么?
它与我的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
Run Code Online (Sandbox Code Playgroud)
应该"信任"在那里使用吗?如果是这样,如果我编辑该文件,我需要重新启动postgres吗?如果'trust'是必要的,那么当我的myname用户登录时,rails和psql命令行工具如何在没有密码的情况下工作?
谢谢!
身份验证方法trust
可能会成功,但正如您无疑意识到的那样,这并不安全.
编辑后pg_hba.conf
,您不必重新启动.A reload
就够了(引用手册):
pg_hba.conf
在启动时以及主服务器进程收到SIGHUP信号时读取该文件.如果在活动系统上编辑文件,则需要向postmaster发送信号(使用pg_ctl
重新加载或kill -HUP
)以使其重新读取文件.
pg_ctl reload
Run Code Online (Sandbox Code Playgroud)
请参阅精细手册.您可能需要8.3版本的手册.heroku上的共享数据库目前在PostgreSQL 8.3上运行.(另外,我怀疑你有权访问heroku上的pg_ctl.)
请注意这一点:
如果没有为用户设置密码,则存储的密码为空,并且该用户的密码验证将始终失败.
强调我的.您可以在本地登录,因为auth-methods ident
或peer
允许.但为了您的目的,您可能需要密码!
归档时间: |
|
查看次数: |
2325 次 |
最近记录: |