几个月前,我开始使用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;
所以我可以通过。我希望我知道如何。
完全重新编辑
答案 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。