我的操作系统是 Fedora 26
我已经安装了 Postgresql 和 Phoenix。
Postgres 有一个 super 用户“postgres”,密码是“postgres”。这可以通过在 psql 中运行\du 来确认。
当我运行 $ mix ecto.create 时,我得到了
** (Mix) The database for Hello.Repo couldn't be created: FATAL 28000 (invalid_authorization_specification): Ident authentication failed for user "postgres"
我怀疑这可能是权限问题。登录 psql 需要
$ sudo -u postgres psql postgres
而 Phoenix 在尝试使用 postgres 时可能没有 sudo 权限。
$ psql --version
psql (PostgreSQL) 9.6.8
任何想法表示赞赏。
最佳答案
默认情况下,本地连接到DB的postgres数据库用户的身份验证是验证操作系统用户是否也是postgres。这就是错误消息所指的身份验证,也是执行 sudo -u postgres
后连接有效的原因。
要使用其他身份验证方式作为 postgres 用户连接,您需要编辑 pg_hba.conf 文件。 (HBA 代表基于主机的身份验证)。
允许这样做的行将如下所示:
local all postgres peer
添加一行看起来像这样(不删除另一行!):
local all postgres md5
而且您也应该能够使用 postgres 的密码进行连接。
如果我没记错的话,您需要重启数据库才能生效。
关于postgresql - Phoenix 和 Postgres 安装 - 不说话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50143707/