首页 文章

postgres不允许alter role superuser和我的默认用户不是超级用户

提问于
浏览
0

我无法使用elixir连接到postgres:

** (Mix) The database for PhoenixChat.Repo couldn't be created: FATAL 28P01 (invalid_password): password authentication failed for user "postgres"

00:08:59.053 [error] GenServer #PID<0.3214.0> terminating
** (Postgrex.Error) FATAL 28P01 (invalid_password): password authentication failed for user "postgres"
    (db_connection) lib/db_connection/connection.ex:148: DBConnection.Connection.connect/2
    (connection) lib/connection.ex:622: Connection.enter_connect/5
    (stdlib) proc_lib.erl:247: :proc_lib.init_p_do_apply/3
Last message: nil
State: Postgrex.Protocol

我无法理解数据库如何允许用户在没有超级用户的情况下制作用户 . 从我的普通用户,它不允许给予超级用户角色:

$ psql -U thisone --password
Password for user thisone: 
psql: FATAL:  Peer authentication failed for user "thisone"

$ psql -U fakeuser
psql: FATAL:  Peer authentication failed for user "fakeuser"

cchilders=> alter user postgres superuser;
ERROR:  must be superuser to alter superusers
cchilders=> select rolname from pg_roles;
  rolname  
-----------
 postgres
 cchilders
 fakeuser
 thisone
(4 rows)

$ psql -U postgres --password
Password for user postgres: 
psql: FATAL:  Peer authentication failed for user "postgres"

如果没有超级用户,如何在postgres中为用户提供超级用户?

1 回答

  • 2

    psql: FATAL: Peer authentication failed for user "thisone" 和其他用户的相同错误意味着,您尝试使用不同的os用户连接套接字(例如,os用户是 cchilders ,您尝试 psql -U postgres ),而 peer m eans you have to be logged in same OS user . 例如,要在 psql -U thisone 成功,你应该在 sudo su - thisone 之前 . 如果您没有此类OS用户,则无法连接 peer 身份验证 . 因此要么将 hba_file peer 更改为 trust 为无密码,要么 md5 为密码验证更改为postgres不是同一个用户...

    为你 sudo -u postgres psql 工作,因为你有os用户postgres(例如osx不是这种情况)..

    最后,您列出用户,而不是检查他们是否是超级用户 . 你应该 \du metacommand与 psql, or add rolsuper`列,所以它将是:

    select rolname from pg_roles where rolsuper;
    

相关问题