Cómo instalar y utilizar PostgreSQL 13 en Rocky Linux
PostgreSQL es un sistema de gestión de bases de datos gratuito y de código abierto que se centra en la extensibilidad y el cumplimiento de SQL. PostgreSQL es un RDBMS (sistema de gestión de bases de datos relacionales) avanzado y de clase empresarial que admite tanto consultas SQL (relacionales) como JSON (no relacionales).
Es un sistema de gestión de bases de datos muy estable, respaldado por más de 20 años de desarrollo por parte de la comunidad de código abierto, y tiene una gran reputación entre los desarrolladores y administradores de sistemas por su fiabilidad, flexibilidad, solidez de las funciones y rendimiento.
PostgreSQL se utiliza como base de datos principal para aplicaciones web, aplicaciones móviles y aplicaciones analíticas. Algunos usuarios notables de PostgreSQL en todo el mundo son Reddit, Skype, Instagram, Disqus, The Guardian, Yandex, Bloomberg, Nokia, BMW, etc.
En esta guía, aprenderás a instalar la base de datos PostgreSQL en Rocky Linux, a asegurar el despliegue de la base de datos PostgreSQL, y el uso básico de las consultas PostgreSQL para gestionar usuarios y bases de datos.
Requisitos previos
- Un sistema Rocky Linux.
- Un usuario con privilegios de root o sudo. Este usuario se utilizará para instalar nuevos paquetes y realizar cambios en todo el sistema.
Añadir el repositorio PostgreSQL
Para esta guía, instalarás la última versión estable de PostgreSQL v13.4. Esta versión está disponible en el repositorio oficial de PostgreSQL, por lo que necesitas añadir el repositorio de PostgreSQL a tu sistema Rocky Linux.
1. Añade el repositorio oficial de PostgreSQL para el sistema Rocky Linux ejecutando el siguiente comando.
sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
2. A continuación, ejecuta el siguiente comando para verificar que el repositorio PostgreSQL está disponible en tu sistema.
sudo dnf -qy repolist
Si el repositorio de PostgreSQL está disponible en tu sistema, verás varias versiones de los repositorios de PostgreSQL como en la captura de pantalla siguiente.
Instalar PostgreSQL 13 en Rocky Linux
Para poder instalar PostgreSQL desde el repositorio oficial de PostgreSQL (no desde el repositorio de Rocky Linux), tienes que desactivar el módulo incorporado del repositorio de PostgreSQL.
1. Ejecuta el siguiente comando para desactivar el módulo de repositorio PostgreSQL incorporado.
sudo dnf module -qy disable postgresql
El comando ejecutará el comando DNF en modo silencioso y aceptará todas las claves gpg(opción -qy) para los repositorios de PostgreSQL.
2. Después, instala la última versión de PostgreSQL 13.4 desde el repositorio de PostgreSQL utilizando el comando dnf que aparece a continuación.
sudo dnf install postgresql13-server
Escribe‘y‘ y pulsa‘Enter’ para instalar el PostgreSQL 13.x.
A continuación, espera la instalación de PostgreSQL.
Inicialización de la base de datos PostgreSQL
A continuación, una vez completada la instalación de PostgreSQL, debes inicializar la configuración de PostgreSQL y luego iniciar y habilitar el servicio PostgreSQL.
1. Ejecuta el siguiente comando para inicializar la configuración de la base de datos PostgreSQL.
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
2. Después, inicia y habilita el servicio PostgreSQL con el siguiente comando.
sudo systemctl enable postgresql-13 sudo systemctl start postgresql-13
Ahora el servicio PostgreSQL está activo y en funcionamiento, y se ejecutará automáticamente en cada arranque.
3. Ahora ejecuta el siguiente comando para verificar el servicio PostgreSQL.
sudo systemctl status postgresql-13
Si el servicio PostgreSQL se está ejecutando, verás la salida verde como «active(running)», tal y como se indica a continuación. De lo contrario, verás la salida roja como «fallido» seguida de los registros de mensajes de error.
Asegurar la implantación de PostgreSQL
Durante la instalación, PostgreSQL creará un nuevo usuario del sistema y un nombre de usuario de la base de datos como«postgres«. Y para esta etapa, establecerá una nueva contraseña para el usuario «postgres«, tanto para el usuario del sistema como para el de la base de datos.
1. Cambia la contraseña del usuario del sistema «postgres» por defecto utilizando el siguiente comando.
passwd postgres
Ahora escribe la nueva contraseña para el usuario del sistema «postgres«.
2. A continuación, para cambiar la contraseña del usuario de la base de datos «postgres«, debes entrar en el shell de PostgreSQL.
Primero, entra como usuario del sistema «postgres» utilizando el siguiente comando.
su - postgres
Ahora entra en el shell de PostgreSQL utilizando el comando psql que aparece a continuación.
psql
Ejecuta la siguiente consulta para crear una nueva contraseña para el usuario por defecto de la base de datos «postgres«.
ALTER USER postgres WITH PASSWORD 'strongpostgrespassword';
Ahora escribe exit y pulsa«Ctrl+d» para salir y cerrar la sesión del shell del usuario«postgres».
Cambiar el método de autenticación
Por defecto, los usuarios locales de PostgreSQL se conectarán al shell de PostgreSQL utilizando el método «peer». El método de autenticación «peer» sólo funcionará para las conexiones locales. En el entorno de desarrollo, puedes utilizar este tipo de autenticación, pero para producción, considera utilizar el método de autenticación basado en contraseña.
En esta etapa, aprenderás a cambiar el método de autenticación por defecto de los pares a la autenticación por contraseña utilizando‘scram-sha-256‘.
1. En primer lugar, inicia sesión en el shell de PostgreSQL utilizando el siguiente comando.
sudo -u postgres psql
2. Ahora ejecuta la siguiente consulta para comprobar la ubicación de la configuración de PostgreSQL‘pg_hba.conf‘.
SHOW hba_file; SHOW password_encryption;
Verás la salida que aparece a continuación.
Verás que la configuración de PostgreSQL «pg_hba.conf» se encuentra en el directorio‘/var/lib/pgsql/13/data‘, y que el cifrado de contraseña por defecto para PostgreSQL en el sistema operativo basado en RHEL es‘scram-sha-256‘.
Ahora escribe ‘\q’ para salir y abandonar el shell de PostgreSQL.
2. A continuación, cambia el directorio de trabajo a‘/var/lib/pgsql/13/data‘ y edita la configuración‘pg_hba.conf‘ utilizando el editor nano.
cd /var/lib/pgsql/13/data/ nano pg_hba.conf
Al final de la línea, cambia el método de autenticación local a‘scram-sha-256‘ como se indica a continuación.
# TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all scram-sha-256 # IPv4 local connections: host all all 127.0.0.1/32 scram-sha-256 # IPv6 local connections: host all all ::1/128 scram-sha-256
Ahora pulsa‘Ctrl+x‘, escribe‘y‘, y pulsa«Enter» para guardar y salir.
Con esta configuración, se te pedirá la contraseña para acceder al shell de PostgreSQL.
3. A continuación, aplica la nueva configuración reiniciando el servicio PostgreSQL con el siguiente comando.
sudo systemctl restart postgresql-13
Ahora, cada vez que quieras acceder al shell de PostgreSQL, deberás escribir la contraseña para autenticarte.
4. Para asegurarte de la configuración de la autenticación con contraseña, accede al shell de PostgreSQL utilizando el siguiente comando.
su - postgres psql
Ahora se te pedirá una contraseña para el usuario por defecto‘postgres‘.
Escribe la contraseña del usuario de la base de datos ‘postgres‘ y pulsa‘Enter‘. Si tu contraseña es correcta, verás el shell de PostgreSQL como se indica a continuación. Si no, verás el error‘FATAL’ porque la contraseña es incorrecta.
Además, puedes utilizar el comando de una línea para entrar en el shell de PostgreSQL como se indica a continuación.
# Log in as default "postgres" user sudo -u postgres psql
# Log in as another user
sudo -u postgres psql -U username
Crear un nuevo usuario y una base de datos para tu aplicación
En esta etapa, aprenderás a crear un nuevo usuario y una base de datos en PostgreSQL.
1. Accede al shell de PostgreSQL ejecutando el siguiente comando.
sudo -u postgres psql
Ahora escribe la contraseña del usuario PostgreSQL‘postgres‘.
2. Ejecuta la consulta PostgreSQL que aparece a continuación para crear un nuevo usuario ‘johndoe’ con la contraseña ‘johndoestrongpassword’ y dale al usuario privilegios para crear una nueva base de datos y un rol.
CREATE USER johndoe WITH CREATEDB CREATEROLE PASSWORD 'johndoestrongpassword';
Después, verifica el nuevo usuario con la siguiente consulta.
\du
Ahora verás al nuevo usuario ‘johndoe’ con la lista de roles ‘Crear rol‘ y‘Crear BD‘ como se indica a continuación.
3. A continuación, para crear una nueva base de datos de usuarios en PostgreSQL, ejecuta la siguiente consulta.
CREATE DATABASE johndoe OWNER johndoe;
4. Ahora verifica la nueva base de datos utilizando la siguiente consulta.
\l
Y verás la nueva base de datos ‘johndoe’ con el propietario ‘johndoe’ como la captura de pantalla de abajo.
Crear tabla e insertar datos
Después de crear una nueva base de datos y un nuevo usuario, aprenderás a crear una tabla, introducir datos y mostrar datos de la base de datos.
1. Ahora entra en el shell de PostgreSQL como usuario ‘johndoe’ utilizando el siguiente comando.
su - postgres psql -U johndoe
O puedes utilizar el comando de una línea como el que aparece a continuación.
sudo -u postgres psql -U johndoe
2. Ahora escribe la contraseña del usuario PostgreSQL ‘johndoe‘ y pulsa‘Enter‘ para iniciar la sesión.
Como puedes ver en la captura de pantalla, ahora has iniciado sesión en el shell de PostgreSQL en la base de datos ‘johndoe=>‘.
2. Ahora ejecuta la siguiente consulta para crear una nueva tabla ‘usuarios’ con algunas columnas ‘id, nombre, edad, dirección y salario’.
CREATE TABLE users ( id INT PRIMARY KEY NOT NULL, name TEXT NOT NULL, age INT NOT NULL, address CHAR(50), salary REAL );
3. Para mostrar las tablas disponibles en la base de datos actual, utiliza la consulta ‘\d‘ como‘describir’, como se indica a continuación.
\d
Para mostrar las columnas de la tabla, puedes utilizar la misma consulta siguiendo el nombre de la tabla, como se indica a continuación.
\d users
A continuación se muestra la salida similar que obtendrás.
3. A continuación, añade nuevos datos a la tabla utilizando la consulta ‘insertar‘ como se indica a continuación.
INSERT INTO users (id,name,age,address,salary) VALUES (1, 'Paul', 32, 'California', 20000.00); INSERT INTO users (id,name,age,address,salary) VALUES (2, 'Jesse', 35, 'Mexico', 30000.00); INSERT INTO users (id,name,age,address,salary) VALUES (3, 'Linda', 27, 'Canada', 40000.00);
4. Después, puedes mostrar todos los datos disponibles utilizando la consulta ‘select‘ como se indica a continuación.
SELECT * FROM users;
La opción ‘ * ‘ volcará todas las columnas de la tabla.
Para especificar la columna, puedes utilizar la consulta«select» como se indica a continuación.
SELECT name,age,salary FROM users;
Verás una salida similar a la de abajo.
Conclusión
¡Enhorabuena! Ahora has aprendido a instalar PostgreSQL en Rocky Linux. También has aprendido a desplegar PostgreSQL de forma segura (mínima), y el uso básico de las consultas PostgreSQL para gestionar usuarios, bases de datos y tablas.