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 update
sudo 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 psql
herramienta 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-256
,md5
ypassword
(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.conf
. De forma predeterminada, PostgreSQL utiliza el método de autenticación de pares para las conexiones locales.
El postgres
usuario 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 postgres
usuario, primero cambie al usuario y luego acceda al indicador de PostgreSQL usando la psql
utilidad:
sudo su - postgres
psql
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 postgres
solo desde el host local.
Creación de funciones y bases de datos de PostgreSQL
Solo los superusuarios y roles con CREATEROLE
privilegios pueden crear nuevos roles.
El siguiente ejemplo muestra cómo crear un nuevo rol llamado john
una base de datos johndb
y otorgar privilegios en la base de datos:
Cree un nuevo rol de PostgreSQL:
sudo su - postgres -c "createuser john"
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.conf
y agréguelo listen_addresses = '*'
en la CONNECTIONS AND AUTHENTICATION
sección.
sudo nano /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 ss
utilidad:
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.conf
archivo.
A continuación se muestran algunos ejemplos que muestran diferentes casos de uso:
# 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 5432
en su firewall.
Suponiendo que está utilizando UFW
para administrar su firewall y desea permitir el acceso desde la 192.168.1.0/24
subred, 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.
0 Comentarios