GNU/Linux >> Linux Esercitazione >  >> Linux

Come consentire la connessione remota al database PostgreSQL utilizzando psql

Quando installi PostgreSQL, per impostazione predefinita la connessione al database tramite TCP/IP non è consentita.

Quando si tenta di connettersi da un client a un database PostgreSQL remoto utilizzando il comando psql, è possibile che venga visualizzato il messaggio di errore "psql:impossibile connettersi al server:connessione rifiutata".

Nell'esempio seguente, da una macchina client, stiamo provando a connetterci a un database PostgreSQL in esecuzione sul server 192.168.102.1. Come puoi vedere dall'output, dice chiaramente che il database PostgreSQL remoto non accetta la connessione.

# psql -U postgres -h 192.168.102.1
psql: could not connect to server: Connection refused
        Is the server running on host "192.168.102.1" and accepting
        TCP/IP connections on port 5432?

Per abilitare la connessione TCP/IP per il database PostgreSQL, devi seguire i due passaggi indicati di seguito.

1. Modifica pg_hba.conf per aggiungere il record di autenticazione client

Sul server di database PostgreSQL, per impostazione predefinita, noterai i seguenti record verso la fine di /var/lib/pgsql/data/pg_hba.conf. Come indicato di seguito, accetta connessioni solo dal localhost.

# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
# IPv6 local connections:
host    all         all         ::1/128               ident

Aggiungi la seguente riga al server pg_hba.conf. Ciò consentirà la connessione dall'indirizzo IP "192.168.101.20" (questo è il client nel nostro esempio). Se desideri consentire la connessione da più computer client su una rete specifica, specifica qui l'indirizzo di rete nel formato dell'indirizzo CIDR.

# vi  /var/lib/pgsql/data/pg_hba.conf
host    all         all         192.168.101.20/24    trust

Di seguito sono riportati vari formati di record di autenticazione client supportati nel file pg_hba.conf. Stiamo utilizzando il formato n. 2 di questo elenco.

  • metodo di autenticazione utente del database locale [opzione-autenticazione]
  • host database utente indirizzo CIDR metodo di autenticazione [opzione-autenticazione]
  • utente database hostssl indirizzo CIDR metodo di autenticazione [opzione-autenticazione]
  • utente database hostnossl indirizzo CIDR metodo di autenticazione [opzione-autenticazione]

Invece del formato "indirizzo CIDR", puoi anche specificare l'indirizzo IP e la maschera di rete in campi separati utilizzando il seguente formato di record.

  • indirizzo IP dell'utente del database host Maschera IP metodo di autenticazione [opzione-autenticazione]
  • Indirizzo IP dell'utente del database hostssl Maschera IP Metodo di autenticazione [opzione-autenticazione]
  • indirizzo IP utente del database hostnossl IP-mask metodo di autenticazione [opzione-autenticazione]

2. Modifica l'indirizzo di ascolto in postgresql.conf

Sul server di database PostgreSQL, per impostazione predefinita, l'indirizzo di ascolto sarà localhost nel file postgresql.conf come mostrato di seguito.

# grep listen /var/lib/pgsql/data/postgresql.conf
listen_addresses = 'localhost'

Modifica questa riga e dai *. Se hai più interfacce sul server, puoi anche specificare un'interfaccia specifica da ascoltare.

# grep listen /var/lib/pgsql/data/postgresql.conf
listen_addresses = '*'

3. Testare la connessione remota

Ora, accedi alla macchina client 192.168.101.20 ed esegui la connessione remota psql al server di database PostgreSQL (192.168.102.1) come mostrato di seguito. Questa volta dovrebbe funzionare.

# psql -U postgres -h 192.168.102.1
Welcome to psql 8.1.11 (server 8.4.18), the PostgreSQL interactive terminal.
postgres=#

Inoltre, se non vuoi specificare il nome host nel parametro della riga di comando ogni volta, puoi impostare l'indirizzo IP del database PostgreSQL remoto nel nome della variabile di ambiente PGHOST come mostrato di seguito.

# export PGHOST=192.168.102.1
# psql -U postgres
Welcome to psql 8.1.11 (server 8.4.18), the PostgreSQL interactive terminal.
postgres=#

Linux
  1. Come accedere a un database Postgresql dalla riga di comando

  2. Come cercare un database usando phpMyAdmin

  3. Come eseguire il backup e il ripristino del database in PostgreSQL

  4. Come consentire la connessione remota al server di database MySQL

  5. Come aggiungere una connessione MySQL remota in Linux?

Come installare PostgreSQL 14 in RHEL 8 Linux

Come consentire l'accesso remoto al server di database MySQL

Come consentire la connessione remota al server MySQL nel server cPanel/WHM?

Come creare un database PostgreSQL?

MySQL remoto in cPanel

Come installare il database PostgreSQL e pgAdmin su Linux