No puedo conectarme a postgres usando elixir:
** (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.ProtocolNo puedo entender cómo una base de datos podría permitir crear usuarios sin que uno sea un superusuario. De mi usuario habitual, no permite dar rol de superusuario:
$ 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"¿Cómo puedo darle a un usuario superusuario en postgres si no hay superusuario?
psql: FATAL: Peer authentication failed for user "thisone" y el mismo error para otros medios de usuario, intenta conectarse en el socket con un usuario de sistema operativo diferente (por ejemplo, el usuario del sistema operativo es cchilders e intenta psql -U postgres ), mientras que los medios de peer debe iniciar sesión en el mismo usuario del sistema operativo . Por ejemplo, para tener éxito en psql -U thisone , debe hacerlo antes de sudo su - thisone . Si no tiene ese usuario del sistema operativo, no puede conectarse con la autenticación de peer . Entonces, cambie en hba_file peer para trust en sin contraseña o md5 para la autenticación de contraseña para que postgres no sea el mismo usuario del sistema operativo ...
Para usted, sudo -u postgres psql funcionó, porque tiene un usuario postgres (que no es el caso con osx, por ejemplo).
Y, por último, enumera a los usuarios, sin verificar si son superusuarios. Debería \du metacommand con psql, or add la columna rolsuper`, por lo que sería:
select rolname from pg_roles where rolsuper;