Como instalar Postgres en CentOS


En este tutorial, mostraré cómo instalar PostgreSQL v10.6 en CentOS 8.

PostgreSQL (también llamado Postgres) es un avanzado, robusto y poderoso sistema de base de datos objeto-relacional, con gran reputación en el entorno empresarial, diseñado para la escalabilidad, el rendimiento, la fiabilidad y la alta disponibilidad. Es compatible con una gran parte del estándar SQL y ofrece muchas características modernas:

  • consultas complejas
  • llaves foráneas
  • disparadores (triggers)
  • vistas actualizables
  • integridad transacional
  • control de concurrencia multiversión
  • funciones
  • operadores
  • funciones agregadas
  • poderoso motor de procedimientos almacenados
  • esquema de seguridad potente y flexible

PostgreSQL tiene 2 componentes principales:

  • Servidor Postgres: gestiona bases de datos, usuarios y tareas de replicación
  • Shell de Postgres: es un programa CLI utilizado para conectarse al servidor de Postgres y ejecutar consultas de base de datos y tareas de administración.

CentOS es un sistema operativo de tipo empresarial (robusto, seguro, confiable y estable) creado a partir de las fuentes proporcionadas por un prominente proveedor de sistemas operativos GNU/Linux: Red Hat (CentOS es una reconstrucción de RHEL).

Clouding.io es un proveedor VPS y de servicios en la nube, con un sistema de pago flexible y un sencillo y poderoso panel de control, puede crear y administrar (expandir, modificar o eliminar) su servidor desde una interfaz web intuitiva. Crear un servidor VPS en Clouding.io toma aproximadamente 5 minutos y el proceso de instalación del servidor se realiza automáticamente. Clouding.io proporciona la última versión de CentOS, Ubuntu (LTS) y Debian, también puede instalar aplicaciones preempaquetadas como: Mangento, WordPress u Odoo, si lo prefiere, puede instalar las suites LAMP/LEMP o docker con un solo click.

Entonces, el primer paso es crear el VPS

Crear el VPS en Clouding

Debe crear y activar su cuenta en Clouding.io para tener acceso al Panel de control.

Paso 1. Crear el servidor

Creando el VPS en Clouding

Paso 2. Configurando el servidor

En este paso podemos seleccionar la distribución GNU/Linux que queremos instalar: CentOS, Debian o Ubuntu, luego seleccionamos la versión que queremos, también podemos establecer la cantidad de RAM y el tamaño del disco duro. Tenga en cuenta que la configuración predeterminada del firewall es demasiado abierta, por ejemplo, puede conectarse al puerto 22 desde cualquier dispositivo, por lo que debe cambiar este comportamiento desde la pestaña My Firewalls.

Configurando el servidor en Clouding.io

Paso 3. Creando el servidor

Este paso se realizará automáticamente y tomará 1 o 2 minutos aproximadamente, puede tomarse una taza de café mientras el servidor se está configurando :). Después de que se complete el proceso, se le enviará a su correo electrónico una notificación de que el servidor está listo para usarse.

VPS status

Paso 4. Características del servidor

Ahora puede inspeccionar las características del servidor como: sistema operativo, núcleos, RAM, IP, contraseña de root y precio VPS, también puede ejecutar acciones del servidor: reiniciar, detener, cambiar el tamaño y más.

Características VPS

Paso 5. Conectarse al servidor

Ahora puede conectarse al servidor a través de ssh usando usuario y contraseña o usando autenticación sin contraseña, en este caso necesita descargar la clave privada desde My SSH Keys y guardarla localmente en el directorio $HOME/.ssh, seleccione el nombre que desee, por ejemplo clouding.pem y luego haga:

$ ssh -i .ssh/clouding.pem root@ServerIP

el fichero clouding.pem debe tener permisos 600, puede establecerlos ejecutando:

$ chmod 600 .ssh/clouding.pem
Conectandose al servidor VPS

Instalar PostgreSQL

dnf es el administrador de paquetes predeterminado en CentOS 8, dnf permite instalar, actualizar y eliminar paquetes del sistema operativo base, para instalar PostgreSQL ejecuta el siguiente comando.

postgresql contiene el programa cliente que necesitará para acceder al servidor PostgreSQL, así como la documentación HTML para todo el sistema.

postgresql-server contiene los programas necesarios para crear y ejecutar un servidor PostgreSQL, que a su vez le permitirá crear y mantener bases de datos PostgreSQL.

postgresql-contrib contiene varios módulos de extensión que se incluyen en la distribución PostgreSQL.

# dnf install postgresql postgrepsql-server postgresql-contrib
Instalando Postgres

Como puede ver en la imagen de arriba, instalamos PostgreSQL con éxito, ahora podemos verificar dónde se encuentran los archivos de Postgres ejecutando:

# rpm -ql packagename

Donde packagename es: postgresql, postgresql-server, postgresql-contrib

por ejemplo los ficheros binarios de Postgres se localizan en /usr/bin, los modulos en /usr/lib64/pgsql y las bases de datos en /var/lib/pgsql

Tenga en cuenta que en este momento el servidor PostgreSQL aún no está listo para usarse, si ejecuta:

# psql -U postgres

Obtendrá el siguiente error

psql: could not connect to server: No such file or directory
	Is the server running locally and accepting
	connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Para solucionarlo debe

Crear/inicializar el cluster

El siguiente comando crea los archivos de configuración y las bases de datos requeridas por el servidor Postgres.

# postgresql-setup --initdb --unit postgresql
Crear BD y ficheros de configuración de Postgres

Si obtienes el siguiente error

/etc/profile: line 45: /dev/null: Permission denied

Puedes solucionarlos ejecutando

# chmod 666 /dev/null

Recuerde /dev/null es un dispositivo especial que descarta todos los datos escritos en él (es el agujero negro en el mundo de las computadoras).

Ahora estamos listos para comenzar a usar nuestro servidor de base de datos.

Administrar el proceso del servidor

En esta parte aprenderemos cómo iniciar, detener o reiniciar el servicio postgresql, para esto usaremos el sistema de inicialización systemd (systemd es un reemplazo para el sistema de inicialización SysV y también un conjunto de configuración y gestión de servicios para el sistema operativo GNU/Linux)

Iniciar el servidor

# systemctl start postgresql

Comprobar el estado del servicio postgresql

Con este comando obtenemos información sobre el servicio PostgreSQL

# systemctl status postgresql
Estado del servicio postgresql

Como puede observar en la imagen de arriba, el servidor PostgreSQL se está ejecutando con éxito.

Reiniciar el servicio postgresql

# systemctl restart postgresql

Detener el servicio postgresql

Según sea necesario, puede detener el proceso de Postgres ejecutando el siguiente comando:

# systemctl stop postgresql

Verificar que el servicio postgresql se inicia con el sistema operativo

# sudo systemctl is-enabled postgresql
Servicio postgresql Inicia con el sistema operativo

deshabilitado significa que no se inicia con el sistema operativo.

Iniciar el servicio postgresql con el sistema operativo

Puede asegurarse de que PostgreSQL comenzará después de un reinicio del sistema ejecutando el siguiente comando:

# systemctl enable postgresql
Iniciar servicio postgresql con el sistema operativo

Si desea revertir este comportamiento, ejecute:

#  systemctl disable postgresql
Desactivar el inicio del servicio postgresql con el sistema operativo

Conectándonos al servidor de base de datos

psql es un cliente CLI para la administración de Postgres, psql permite:

  • Conectarnos al servidor de BD
  • Crear BD
  • Administrar usuarios
  • Ejecutar consultas SQL y realizar tareas de administración en general.

Antes de conectarnos al servidor vale la pena señalar que:

  • PostgreSQL gestiona los permisos de acceso a la base de datos utilizando el concepto de roles. Un rol puede considerarse como un usuario de la base de datos o un grupo de usuarios de la base de datos, dependiendo de cómo esté configurado el rol. Los roles pueden ser los dueños de objetos de base de datos (por ejemplo, tablas y funciones) y pueden asignar privilegios sobre esos objetos a otros roles para controlar quién tiene acceso a los mismos.
  • El procedimiento de instalación creó una cuenta de usuario llamada postgres (este usuario tiene todos los privilegios sobre el servidor PostgreSQL y es similar al usuario root en MySQL) que está asociada con la función predeterminada de Postgres. Para usar Postgres, puede iniciar sesión con esa cuenta.
# su - postgres -c psql
Conectarse al servidor Postgres

Como puede ver en la imagen de arriba, estamos conectados a PostgreSQL, emita el comando de ayuda para comenzar a usar el shell de PostgreSQL.

Si está utilizando sudo, puede conectarse al servidor PostgreSQL ejecutando:

$ sudo -u postgres psql

Después de conectarte al servidor de Postgres puedes

Crear un nuevo usuario

postgres=# CREATE USER username WITH PASSWORD 'MYPASS';

por ejemplo:

postgres=# CREATE USER dbadmin WITH PASSWORD 'MyDBPass12';
Creando usuario

La contraseña anterior es débil. No la use en el entorno de producción.

Crear basa de datos

postgres=# CREATE DATABASE dbname OWNER username;

por ejemplo:

postgres=# CREATE DATABASE mydb OWNER dbadmin;
Crear base de datos

Habilitar el acceso remoto al servidor PostgreSQL

Para conectarse desde un dispositivo remoto, debe modificar los archivos /var/lib/pgsql/data/postgresql.conf y /var/lib/pgsql/data/pg_hba.conf. Busque listen_address en postgresql.conf, descomente y agregue las direcciones IP donde escucha el servidor Postgres, por ejemplo:

listen_addresses = 'localhost, YourServerIP'

Busque la sección de conexiones locales IPv4 (IPv4 local connections) en el archivo pg_hba.conf y agregue la IP de su dispositivo remoto

host    all             all             RemoteDeviceIP/32        md5

Reinicie su servidor de base de datos y agregue una regla de firewall como esta:

Regla del muro cortafuego para acceder al servidor Postgres

Tenga en cuenta que Source IP es demasiado abierta, por lo que debe restringir la IP a su dispositivo remoto.

Ahora puede conectarse al servidor PostgreSQL desde un dispositivo remoto:

$ psql -U dbadmin -h RemoteIPServer -d mydb
Conectarse al servidor Postgres

Conclusión

Ahora ha configurado PostgreSQL en su servidor CentOS 8. Sin embargo, todavía hay mucho más que aprender con Postgres, por lo que un buen lugar para comenzar es el sitio oficial del proyecto.


YouTube video

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.