Postgres致命角色名称不允许登录

时间:2015-09-02 13:41:42

标签: postgresql ruby-on-rails-4

几个月前,我开始使用Herg的postgres,然后就开始了。本周我不得不再次使用postgres ......

尝试运行rails服务器时,我得到:

PG::ConnectionBad
FATAL: role "codemonkey" is not permitted to log in

config/initializers/quiet_assets.rb:7:in `call_with_quiet_assets'

我正在使用postgres 9.4.4而我正在尝试使用Postgres.app进入。(我也有pgAdmin3。)

在终端:

当我运行su postgres psql时,我输入密码后输入/usr/local/bin/psql: /usr/local/bin/psql: cannot execute binary file

当我做su postgres' I first get a 'bash-3.2$环境时。当我输入bash: ALTER: command not found

时,此环境(显然)会给出:ALTER ROLE codemonkey WITH LOGIN;

小额外编辑
感谢a_horse_with_no_name我知道在这个bash-3.2 $环境中我可以启动psql(作为超级用户)。我不确定它是否正常工作,我在SQL命令后得到could not save history to file "/Library/PostgreSQL/9.4/.psql_history": No such file or directory。我仍然留下相同的致命错误。

在某些时候我得到了:

shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied

当我使用postgres.app大象符号并点击"打开psql"输入密码后输入我的密码:psql: FATAL: role "codemonkey" is not permitted to log in

这就是我的〜/ .bash_profile的样子:我应该做些什么来添加postgres命令吗?它从不认识任何东西。

export PATH=/usr/local/bin:$PATH

# Setting PATH for Python 3.4
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.4/bin:${PATH}"
export PATH
### Added by the Heroku Toolbelt
export PATH="/usr/local/heroku/bin:$PATH"
export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

这就是我的pg_hba.conf的样子:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             postgres                                indent
# IPv4 local connections:
host    all             codemonkey     127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     codemonkey                                trust
#host    replication     codemonkey        127.0.0.1/32            trust
#host    replication     codemonkey        ::1/128                 trust

我认为在某些时候我应该可以给命令ALTER ROLE codemonkey WITH LOGIN;

所以我可以通过。我希望我知道如何。

完全重新编辑

2 个答案:

答案 0 :(得分:1)

您应该使用以下命令查看用户的权限:

SELECT * FROM pg_roles;

如果与用户对应的rolcanlogin设置为false(f),则使用以下命令:

ALTER USER username WITH LOGIN;

答案 1 :(得分:0)

您不需要重新安装所有内容来更改Postgres用户的密码。要更改密码,请运行ALTER ROLE youruser PASSWORD 'yourpassword';

对于Heroku(因为它的远程连接),您需要临时更改ipv4 / ipv6部分(取决于您使用的是什么)将您的客户端IP地址(x.x.x.x)列入白名单。 忘记在密码重置后再次更改为md5。要应用pg_hba.conf,请更改重启postgres服务。

#IPv4 local connections:
host    all        youruser             x.x.x.x/32            trust

SO有很多好answers as well