ruby on rails - Ottenere errore: l'autenticazione peer non è riuscita per l'utente "postgres", quando si cerca di ottenere pgsql che funziona con le rotaie




ruby-on-rails postgresql (12)

  1. Vai a questo /etc/postgresql/9.x/main/ e apri il file pg_hba.conf

Nel mio caso:

$>  sudo nano /etc/postgresql/9.3/main/pg_hba.conf
  1. Sostituisci peer con md5

Quindi questo sarà cambiato in:

Accesso amministrativo al database tramite socket di dominio Unix locale tutto postgres peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

Questo:

Accesso amministrativo al database tramite socket di dominio Unix locale all postgres md5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
  1. Quindi riavviare il server pg:

    $> sudo service postgresql restart

Di seguito è riportato l'elenco dei METODI utilizzati per connettersi con postgres:

# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi",
# "krb5", "ident", "peer", "pam", "ldap", "radius" or "cert".  Note that
# "password" sends passwords in clear text; "md5" is preferred since
# it sends encrypted passwords.

Nota: se non hai ancora creato l'utente di postgres. Crealo e ora puoi accedere al server Postgres usando le credenziali dell'utente.

SUGGERIMENTO: se non funziona dopo il riavvio di Postgres, chiudere il terminale e riaprire.

Sto ottenendo

FATAL: Peer authentication failed for user "postgres"

quando provo a far funzionare postgres con Rails.

Ecco il mio pg_hba.conf , il mio database.yml e un dump della traccia completa .

Ho cambiato l'autenticazione in md5 in pg_hba e ho provato diverse cose, ma nessuna sembra funzionare.

Ho anche provato a creare un nuovo utente e database come da Rails 3.2, FATAL: autenticazione peer non riuscita per l'utente (PG :: Errore)

Ma non si visualizzano su pgadmin o anche quando eseguo sudo -u postgres psql -l

Qualche idea su dove sto andando male?


Cambiare il peer METHOD per fidarsi di pg_hba.conf (/etc/postgresql/9.1/main/pg_hba.conf | line 85) risolve il problema. L'aggiunta di md5 richiede una password, quindi se c'è un obbligo di evitare l'uso di password, usa trust invece di md5 .


Dopo aver installato Postgresql ho fatto i seguenti passaggi.

  1. apri il file pg_hba.conf per Ubuntu che sarà in /etc/postgresql/9.x/main e cambia questa riga:
local   all             postgres                                peer

a

local   all             postgres                                trust
  1. Riavvia il server
sudo service postgresql restart
  1. Accedi a psql e imposta la tua password

psql -U postgres

ALTER USER postgres with password 'your-pass';
  1. Infine cambia il pg_hba.conf da
local   all             postgres                                trust

a

local   all             postgres                                md5

Dopo aver riavviato il server postgresql, è possibile accedervi con la propria password

Dettagli dei metodi di autenticazione:

fiducia - chiunque sia in grado di connettersi al server è autorizzato ad accedere al database

peer - usa il nome utente del sistema operativo del client come nome utente del database per accedervi.

md5 - autenticazione password-base

per ulteriori controlli di riferimento qui


Ho avuto lo stesso problema.

La soluzione di Depa è assolutamente corretta.

Assicurati di avere un utente configurato per usare PostgreSQL.

Controlla il file:

$ ls /etc/postgresql/9.1/main/pg_hba.conf -l

Il permesso di questo file deve essere dato all'utente con cui è stato registrato il tuo psql.

Ulteriore. Se sei buono fino ad ora ..

Aggiorna secondo le istruzioni di @ depa.

vale a dire

$ sudo nano /etc/postgresql/9.1/main/pg_hba.conf

e quindi apportare modifiche.


Il problema è ancora il tuo file pg_hba.conf (/etc/postgresql/9.1/main/pg_hba.conf*). Questa linea:

local   all             postgres                                peer

Dovrebbe essere

local   all             postgres                                md5

* Se non riesci a trovare questo file, l'esecuzione di locate pg_hba.conf dovrebbe mostrarti dove si trova il file.

Dopo aver modificato questo file, non dimenticare di riavviare il tuo server PostgreSQL. Se sei su Linux, sarebbe il sudo service postgresql restart .

Queste sono brevi descrizioni di entrambe le opzioni in base ai documenti PostgreSQL ufficiali sui metodi di autenticazione .

Autenticazione peer

Il metodo di autenticazione peer funziona ottenendo il nome utente del sistema operativo del client dal kernel e utilizzandolo come nome utente del database consentito (con mappatura facoltativa del nome utente). Questo metodo è supportato solo su connessioni locali.

Autenticazione della password

I metodi di autenticazione basati su password sono md5 e password. Questi metodi funzionano in modo simile, tranne per il modo in cui la password viene inviata attraverso la connessione, ovvero MD5-hash e clear-text, rispettivamente.

Se sei preoccupato per gli attacchi di "sniffing" della password, allora è preferito md5. La password semplice dovrebbe sempre essere evitata se possibile. Tuttavia, md5 non può essere utilizzato con la funzione db_user_namespace. Se la connessione è protetta dalla crittografia SSL, la password può essere utilizzata in modo sicuro (sebbene l'autenticazione con certificato SSL potrebbe essere una scelta migliore se si dipende dall'utilizzo di SSL).

pg_hba.conf esempio per pg_hba.conf

/etc/postgresql/9.1/main/pg_hba.conf


Le modifiche sopra hanno funzionato per me, dopo aver capito che avevo bisogno di riavviare il server Postgres dopo averli creati. Per ubuntu:

sudo /etc/init.d/postgresql restart

Questo ha funzionato per me !!

sudo -u postgres psql

Se hai un problema, devi localizzare il tuo pg_hba.conf . Il comando è:

find / -name 'pg_hba.conf' 2>/dev/null

e successivamente modificare il file di configurazione:

Postgresql 9.3

Postgresql 9.4

Il prossimo passo è: Riavvio della tua istanza db:

service postgresql-9.3 restart

In caso di problemi, è necessario impostare nuovamente la password:

ALTER USER db_user with password 'db_password';


Se stai affrontando questo problema con i binari e sai che hai già creato quel nome utente con password insieme ai diritti corretti, devi solo inserire il seguente file alla fine del tuo file database.yml.

host: localhost

il file generale apparirà di seguito

development:
  adapter: postgresql
  encoding: unicode
  database: myapp_development
  pool: 5
  username: root
  password: admin
  host: localhost

Non è necessario toccare il tuo file pg_hba.conf . Buona programmazione


Se stai cercando di trovare questo file in Cloud 9, puoi farlo

sudo vim /var/lib/pgsql9/data/pg_hba.conf

Premere I per modificare / inserire, premere ESC 3 volte e digitare :wq salverà il file e uscirà


Stavo spostando la directory dei dati su un server clonato e avendo problemi ad accedere come postgres. La reimpostazione della password di Postgres ha funzionato per me.

root# su postgres postgres$ psql -U postgres psql (9.3.6) Type "help" for help. postgres=#\password Enter new password: Enter it again: postgres=#


Usa host=localhost in connessione.

PGconn *conn = PQconnectdb(
    "host=localhost user=postgres dbname=postgres password=123"
);




postgresql