PostgreSQL o Postgres es un sistema de administración de base de datos relacional de objetos de uso general y código abierto con muchas características avanzadas que le permiten crear entornos tolerantes a fallas o aplicaciones complejas.

En esta guía, explicaremos cómo instalar el servidor de base de datos PostgreSQL en Ubuntu 20.04 y exploraremos los conceptos básicos de la administración de la base de datos PostgreSQL.

requisitos previos

Para poder instalar paquetes, debe iniciar sesión como root o usuario con privilegios sudo .

Instalar PostgreSQL en Ubuntu

Al momento de escribir este artículo, la última versión de PostgreSQL disponible en los repositorios oficiales de Ubuntu es la versión 10.4 de PostgreSQL.

Ejecute los siguientes comandos para instalar el servidor PostgreSQL en Ubuntu:

sudo apt updatesudo apt install postgresql postgresql-contrib

También estamos instalando el paquete de contribución de PostgreSQL que proporciona varias funciones adicionales para el sistema de base de datos de PostgreSQL.

Una vez completada la instalación, el servicio de PostgreSQL se iniciará automáticamente. Use la psqlherramienta para verificar la instalación conectándose al servidor de la base de datos PostgreSQL e imprimiendo su versión :

sudo -u postgres psql -c "SELECT version();"
PostgreSQL 12.2 (Ubuntu 12.2-4) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-8ubuntu1) 9.3.0, 64-bit

Eso es. Se ha instalado PostgreSQL y puede comenzar a usarlo.

Funciones y métodos de autenticación de PostgreSQL

Los permisos de acceso a la base de datos dentro de PostgreSQL se manejan con el concepto de roles. Un rol puede representar un usuario de la base de datos o un grupo de usuarios de la base de datos.

PostgreSQL admite múltiples métodos de autenticación . Los métodos más utilizados son:

  • Confianza: un rol puede conectarse sin una contraseña, siempre que se cumplan las condiciones definidas en el pg_hba.conf.
  • Contraseña: un rol puede conectarse proporcionando una contraseña. Las contraseñas se pueden almacenar como scram-sha-256md5password(texto sin cifrar).
  • Ident: solo se admite en conexiones TCP/IP. Funciona obteniendo el nombre de usuario del sistema operativo del cliente, con una asignación de nombre de usuario opcional.
  • Peer: igual que Ident, pero solo se admite en conexiones locales.

La autenticación del cliente de PostgreSQL se define en el archivo de configuración llamado pg_hba.confDe forma predeterminada, PostgreSQL utiliza el método de autenticación de pares para las conexiones locales.

El postgresusuario se crea automáticamente cuando instala PostgreSQL. Este usuario es el superusuario de la instancia de PostgreSQL y es equivalente al usuario root de MySQL.

Para iniciar sesión en el servidor PostgreSQL como postgresusuario, primero cambie al usuario y luego acceda al indicador de PostgreSQL usando la psqlutilidad:

sudo su - postgrespsql

Desde aquí, puede interactuar con su instancia de PostgreSQL. Para salir del tipo de shell de PostgreSQL:

\q

Otra forma de acceder al indicador de PostgreSQL sin cambiar de usuario es usar el sudo comando:

sudo -u postgres psql

En general, debe iniciar sesión en el servidor de la base de datos postgressolo desde el host local.

Creación de funciones y bases de datos de PostgreSQL

Solo los superusuarios y roles con CREATEROLEprivilegios pueden crear nuevos roles.

El siguiente ejemplo muestra cómo crear un nuevo rol llamado johnuna base de datos johndby otorgar privilegios en la base de datos:

  1. Cree un nuevo rol de PostgreSQL:

    sudo su - postgres -c "createuser john"
  2. Cree una nueva base de datos PostgreSQL:

    sudo su - postgres -c "createdb johndb"

Para otorgar permisos al usuario en la base de datos, conéctese al shell de PostgreSQL:

sudo -u postgres psql

y ejecuta la siguiente consulta:

GRANT ALL PRIVILEGES ON DATABASE johndb TO john;

Habilitar el acceso remoto al servidor PostgreSQL

De manera predeterminada, el servidor PostgreSQL solo escucha en la interfaz local ( 127.0.0.1).

Para habilitar el acceso remoto a su servidor PostgreSQL, abra el archivo de configuración postgresql.confy agréguelo listen_addresses = '*'en la CONNECTIONS AND AUTHENTICATIONsección.

sudo nano /etc/postgresql/12/main/postgresql.conf
/etc/postgresql/12/main/postgresql.conf
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'     # what IP address(es) to listen on;

Guarde el archivo y reinicie el servicio PostgreSQL:

sudo service postgresql restart

Verifique los cambios con la ssutilidad:

ss -nlt | grep 5432

El resultado muestra que el servidor PostgreSQL está escuchando en todas las interfaces ( 0.0.0.0):

LISTEN  0        244              0.0.0.0:5432           0.0.0.0:*              
LISTEN  0        244                 [::]:5432              [::]:* 

El siguiente paso es configurar el servidor para aceptar conexiones remotas editando el pg_hba.confarchivo.

A continuación se muestran algunos ejemplos que muestran diferentes casos de uso:

/etc/postgresql/12/main/pg_hba.conf
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# The user jane can access all databases from all locations using md5 password
host    all             jane            0.0.0.0/0                md5

# The user jane can access only the janedb from all locations using md5 password
host    janedb          jane            0.0.0.0/0                md5

# The user jane can access all databases from a trusted location (192.168.1.134) without a password
host    all             jane            192.168.1.134            trust

El último paso es abrir el puerto 5432en su firewall.

Suponiendo que está utilizando UFW para administrar su firewall y desea permitir el acceso desde la 192.168.1.0/24subred, ejecutaría el siguiente comando:

sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432

Asegúrese de que su firewall esté configurado para aceptar conexiones solo desde rangos de IP confiables.

Conclusión

Le mostramos cómo instalar y configurar PostgreSQL en el servidor Ubuntu 20.04. Consulte la documentación de PostgreSQL 12 para obtener más información sobre este tema.

Si tiene alguna pregunta, por favor deje un comentario a continuación.