Está en la página 1de 76

Universidad Tecnológica

intercontinental UTIC
Licenciatura en Análisis de Sistemas
Informáticos

Tema: Servidor de Base de Datos Postgresql con


seguridad de acceso y Backup automático en
Centos7.

Integrantes: Nelson Alan David Leguizamón Pane.

Alicia Medina.

Christian Colman.

Guillermo Cardozo.

Enmanuel Portillo.

Andrea Páez.

Fabrizzio Cespedes.

Docente: Lic. Jorge García.

Asunción - Julio 2022

1
Índice
Objetivos...................................................................................................................................3

Objetivo General..................................................................................................................3

Objetivo Específico.............................................................................................................3

Introducción.............................................................................................................................4

Reseña.......................................................................................................................................5

PostgreSQL...........................................................................................................................6

¿Qué es PostgreSQL?........................................................................................................6

Centos 7.................................................................................................................................7

VirtualBox..............................................................................................................................8

Ventajas de PostgreSQL....................................................................................................9

Desventajas de PostgreSQL...........................................................................................10

Compatibilidad de aplicaciones con VirtualBox........................................................10

Ventajas de VirtualBox.....................................................................................................11

Desventajas de VirtualBox..............................................................................................11

Escenario o Plano de Red de la Empresa.......................................................................12

Configuraciones básicas de VirtualBox para el servidor de Base de Datos


Postgresql con Centos 7.....................................................................................................13

Configuración del firewall...............................................................................................30

Configuración del NetworkManager.............................................................................31

Instalación y preparación de los paquetes necesarios para PostgreSQL..............33

Configuración del servicio SSHD para conexión remota al servidor CentOS 7....39

Configuración del servidor OpenSSH..........................................................................41

Configuración de conexiones de los usuarios para los accesos remotos al motor


de base de datos Postgres.................................................................................................46

Gestión de Usuarios en PostgreSQL................................................................................51

Dar permisos a un usuario en PostgreSQL....................................................................53

Revocar permisos a un usuario en PostgreSQL...........................................................54

2
Rol de lectura y escritura....................................................................................................56

Revocar o cambiar los permisos de usuario..................................................................57

Automatizar copias de seguridad con Crontab.............................................................58

Procedimientos y restauración del Backups..................................................................63

Prueba del Sistema de Gestión desde un cliente..........................................................68

Conclusión..............................................................................................................................73

Bibliografía..............................................................................................................................74

3
Objetivos

Objetivo General
Montar un Servidor de Base de Datos PostgreSQL con seguridad de acceso y
Backup automático en Centos7.

Objetivo Específico
 Describir conceptos básicos de PostgreSQL, Centos7 y VirtualBox.
 Realizar la instalación y configuración del Servidor de BD PostgreSQL.
 Gestionar y configurar usuarios en Postgresql.
 Emplear Copias de Seguridad Automática con crontrab.
 Restaurar Backup de Base de Datos.
 Preparar conexiones a la Base de Datos desde un cliente.

4
Introducción

En las actuales condiciones de alta competitividad que vivimos, y en constante


avance de la tecnología, lo cual conlleva que estemos capacitados, o que nos
capacitemos para enfrentar esos cambios de la mejor manera posible. Durante
el desarrollo de este trabajo de investigación, realizaremos la instalación y
configuración de un Servidor de Base de Datos PostgreSQL en un Sistema
Operativo Centos 7 montado a través de la virtualización utilizando VirtualBox.

Los sistemas de administración de bases de datos relacionales son un


componente clave de una gran cantidad de aplicaciones y sitios web.
Proporcionan una alternativa estructurada para almacenar la información,
organizarla y acceder a ella.

PostgreSQL, también conocido como Postgres, es un sistema de


administración de bases de datos relacionales que proporciona una
implementación del Structured Query Language, más conocido como SQL. Se
utiliza en muchos proyectos populares, grandes y pequeños, cumple con los
estándares y tiene muchas funciones avanzadas, como transacciones fiables y

concurrencias sin bloqueos de lectura. Siguiendo esta guía, instalaremos una


versión de PostgreSQL en un servidor CentOS 7.

5
Reseña

Virtual Box VirtualBox es un software de virtualización de sistemas operativos,


una potente herramienta que te permite crear sistemas operativos dentro del
tuyo propio. Es tremendamente útil si no se desea generar un dual boot en el
PC en sí. VirtualBox te permite cambiar de tu sistema operativo a otro
simplemente pasando de una ventana a otra del ordenador, no tiene mayor
complicación, pero sí un montón de opciones.

VirtualBox es gratuito en su licencia de Oracle VM para uso personal o de


prueba, por lo que cualquiera puede trastear en su casa con él simplemente
descargándolo desde su web oficial. Durante la instalación cabe señalar que
todas las siguientes opciones han de estar marcadas si se quiere disfrutar de él
al completo y sin problemas, ya que incluye software y drivers necesarios en la
mayoría de los casos.

6
PostgreSQL

¿Qué es PostgreSQL?

PostgreSQL es un gestor de bases de datos relacional y orientado a objetos.


Su licencia y desarrollo es de código abierto, siendo mantenida por una
comunidad de desarrolladores, colaboradores y organizaciones comerciales de
forma libre y desinteresadamente. Esta comunidad es denominada PDGD
(PostgreSQL Global Development Group, por sus siglas en inglés).

Es reconocido actualmente como uno de los sistemas gestores de bases de


datos relacionales más potentes del mercado. Presenta fácil accesibilidad, es
multiplataforma y está disponible para su utilización en casi todos los sistemas
operativos utilizados en la actualidad sin disminuir su rendimiento.

PostgreSQL es uno de los gestores de bases de datos de código libre más


potentes y fiables del mercado, una de las mejores alternativas a MySQL. Una
de la forma de describir y mencionar sus principales características, que le han
traído el uso y reconocimiento actual, es a través de las ventajas y desventajas
que presenta.

7
Centos 7

CentOS es un proyecto de código abierto gratuito de nivel empresarial con la


misma funcionalidad, rendimiento y estabilidad que el sistema operativo de
pago Redhat Enterprise Linux (RHEL).

Cuando CentOS 7 está configurado correctamente y se ejecuta en hardware de


calidad, es un sistema operativo de servidor muy estable, con muy pocos (si es
que hay) problemas. Se reduce el riesgo de caídas y errores, ya que sólo
ejecuta versiones estables de software empaquetado. Con la distribución
CentOS Linux puede obtener la ventaja del software de servidor de código
abierto como Apache Web Server, Samba, Sendmail, CUPS, vsFTPd, MySQL
y BIND.

La plataforma CentOS 7 goza de una estabilidad superior a largo plazo con


menos errores y agujeros de seguridad en comparación con otras
distribuciones del mercado, por lo que no necesita nuevas versiones o
actualizaciones de hardware con tanta frecuencia.

8
VirtualBox

El software de virtualización multiplataforma de código abierto más popular del


mundo, permite a los desarrolladores entregar código más rápido, ya que
pueden ejecutar múltiples sistemas operativos en un solo dispositivo. Los
equipos de TI y los proveedores de soluciones usan VirtualBox para reducir los
costos operativos y acortar el tiempo necesario para implementar aplicaciones
de forma segura en entornos locales y en la nube.

Los desarrolladores utilizan VirtualBox para entregar código más rápido


mediante la comprobación de aplicaciones en diferentes sistemas operativos y
versiones en el mismo escritorio que usan para el desarrollo, y posteriormente
implementan automáticamente sus máquinas virtuales en entornos de
producción.

Los equipos de TI pueden simplificar los entornos de desarrollo al ejecutar la


misma solución en cualquier sistema operativo host x86. Asimismo, admiten
una amplia gama de versiones de sistemas operativos en máquinas virtuales.
Los sistemas operativos de host compatibles incluyen Windows, Linux y
macOS.

9
Ventajas de PostgreSQL

 Instalación y uso gratuito: PostreSQL es un gestor de base de datos


de código libre y completamente gratuito, por lo que podemos instalarlo
y utilizarlo las veces que queramos y en todos los dispositivos que
queramos.

 Sistema disponible Multiplataforma: Es compatible con prácticamente


todas las tecnologías y sistemas operativos de la actualidad.

 Estabilidad: PostgreSQL está hace más de 20 años en el mercado con


un constante desarrollo y soporte de sus versiones. Incluso presenta un
sistema de alta disponibilidad mientras los servidores están en modo de
suspensión o recuperación, por lo que los usuarios pueden acceder en
modo de solamente lectura sin bloquear de forma completa el sistema.

 Escalabilidad y configuración: Es posible configurar de forma


individual PostgreSQL según los recursos de hardware disponibles en
nuestro sistema, por lo que podemos ajustar el número de CPU y
cantidad de memoria disponible de para un funcionamiento óptimo.

 Estándar SQL: Implementa la mayor parte de las funcionalidades


principales del estándar SQL, por lo que se puede realizar de forma
sencilla el incluír consultas y scripts de otros motores de bases de datos,

 Herramienta gráfica: Incorpora una herramienta gráfica para la


administración de las bases de datos de forma fácil e intuitiva, por la cual
podemos ejecutar sentencias SQL, realizar copias de seguridad o tareas
de mantenimiento.

 Robustez y fiabilidad: PostgreSQL cumple con la característica y


protocolo ACID, lo que significa Atomicidad, Consistencia, Aislamiento y
Durabilidad (siglas en inglés). Por ello, se garantiza la información de la
base de datos y fiabilidad en el sistema.

 Soporte y ayuda: A pesar de no contar con soporte telefónico o en


línea, existe una infinidad de foros y páginas para nuestra ayuda.
Además, la comunidad de PostreSQL es una de las más activas.

10
Desventajas de PostgreSQL

 PostgreSQL está diseñado específicamente para ambientes con alto


volumen de datos, por lo que puede parecer lento en implementaciones
para bases de datos de pequeño y mediano tamaño.

No presenta una facilidad en comandos o sintaxis, por lo que se puede


dificultar su uso si no poseemos conocimientos medios en lenguaje SQL.

Compatibilidad de aplicaciones con VirtualBox.

Otra de las muchísimas razones por las que puedes usar VirtualBox es por
razones de compatibilidad. Imagínate que tienes un programa que necesitas
abrir sí o sí, pero sólo funciona en un sistema operativo anterior (por ejemplo,
MS-DOS o Windows 98), gracias a VirtualBox podrás usar el programa sin
ningún problema, así como guardar la información, etc.

Dentro de las compatibilidades, nos encontramos con que quizás necesitas


ejecutar un programa que sólo funciona en otro sistema operativo, por ejemplo,
si estás usando Fedora (Linux), es posible que necesites usar el Photoshop o
cualquier otro programa que sólo funciona en Windows, pues gracias a
VirtualBox podrás usarlo sin problema.

11
Ventajas de VirtualBox

 Lo más importante: Es gratis. Sin duda una de las razones de más peso
para utilizar VirtualBox es porque es una aplicación gratuita. Oracle, la
compañía propietaria de esta herramienta se encarga de desarrollarla de
forma completamente libre

 VirtualBox es multiplataforma y multi-ejecución. Puede ser usado


fácilmente como solución empresarial u hogareña, y es un software de
código abierto que posee una enorme cantidad de funciones y un
excelente rendimiento. Permitiéndonos así poder virtualizar casi
cualquier S.O.

 Es compatible con máquinas virtuales de VMware. Puede ser utilizada


tanto por usuarios particulares como por profesionales, sin limitaciones.

 Soporta tecnologías de virtualización VT-x y AMD-v.

 Herramientas Guest Additions. Son un complemento que se instalan en


las máquinas virtuales que hemos creado con esta aplicación para
extender la funcionalidad de estas y mejorar su rendimiento.

 Capacidad para personalizar el hardware. Discos duros, Redes,


Cantidad de procesadores y de núcleos dedicados, Cantidad de
memoria RAM, dispositivos de entrada y salida, Audio, pantallas y hasta
aceleración 3D.

Desventajas de VirtualBox

 Gastos generales: las máquinas virtuales consumen más recursos que


un contenedor.

 Velocidad: en algunos aspectos, las máquinas virtuales son más lentas.

 Redundancia: las máquinas virtuales se diseñaron asumiendo que cada


máquina residiría en un único servidor.

12
Escenario o Plano de Red de la Empresa.

13
Configuraciones básicas de VirtualBox para el servidor de
Base de Datos Postgresql con Centos 7

Las configuraciones básicas a tener en cuenta en Virual Box antes de instalar


el servidor Linux Centos7.

Ejecutar el programa Virtual Box.

Una vez ingresado en el programa, nos dirigimos a la barra principal y


pulsamos sobre el menú máquina, después sobre el botón nueva.

14
Asignar un nombre a la máquina virtual que crearemos, el SO a instalar es
Centos7 de 64 bits, el nombre que tendrá será Centos7_Postgres.

Seleccionar la ubicación donde se guardará la máquina virtual.

En tipo: debe seleccionar el tipo de sistema operativo, en este caso es Linux.

En versión: Debe seleccionar el tipo de servidor, si no encuentra la opción


entonces de be seleccionar Other Linux (64 bit).

Asignamos la memoria RAM que será utilizada para esta máquina virtual, le
asignaremos 2048 MB que equivales a 2 GB de RAM, después presionamos el
botón Next.

15
Creamos un disco duro virtual, seleccionamos “Crear un disco duro virtual
ahora” y después presionamos el botón Crear.

Después seleccionamos el tipo de archivo de disco duro, en este caso


seleccionamos VDI (VirtualBox Disk Image)

16
Seleccionamos el tipo de tamaño que tendrá el disco duro, seleccionando la
opción “Reservado dinámicamente”.

Seleccionamos el tamaño de disco duro virtual, que tendrá el servidor, será de


10.00 GB y Luego pulsamos sobre el botón Crear.

17
Una vez creada la nueva máquina virtual ingresamos a la opción
Configuración.

Seleccionamos la opción Sistema, para personalizar el orden de arranque de


la máquina virtual, para que cargue el ISO de la lectora Óptica, buscando los
archivos de arranque del Sistema Operativo.

18
Después seleccionamos Almacenamiento, y en Controlador IDE escogemos
el vacío, luego pulsamos en el icono del DVD.

Donde seleccionamos un archivo de disco, y escogemos el ISO Centos7


descargado con anterioridad y pulsamos el botón Abrir.

19
Con esto terminado pulsamos el botón Aceptar.

Ahora comenzamos el proceso de instalación de Centos7, pulsamos botón


Iniciar.

Para seguir pulsamos el botón Iniciar.

20
Seleccionamos Install CentOS 7, presionando la tecla Control derecho para
ingresar a la máquina virtual y pulsamos la tecla Enter.

Seleccionamos el Idioma del sistema operativo

21
En la pantalla de resumen de la instalación pulsamos en Fecha y Hora.

Seleccionamos la región América y ciudad Asunción. Luego pulsamos en


listo.

22
Verificamos la configuración del teclado, pulsamos en teclado

Después de verificar la disposición del teclado pulsamos en listo.

23
Pulsamos en selección de software

Seleccionamos servidor con GUI, para instalar una interfaz gráfica

24
Seleccionamos destino de la instalación.

En otras opciones de almacenamiento, seleccionamos la opción Voy a


configurar las particiones. Luego pulsamos en listo.

25
En particionado manual, seleccionamos partición estándar, en la barra de
abajo pulsamos el icono de más “+”.

En la ventana agregar un nuevo punto de montaje, creamos una partición


/boot, con capacidad de 1000 MB, y pulsamos en añadir punto de montaje.

26
Luego comenzamos una nueva partición, pulsamos el icono de más “+”, y
creamos la partición Swap que es memoria virtual con 2048 MB. Luego
pulsamos añadir punto de montaje.

Después comenzamos una nueva partición, pulsamos el icono de más “+”, y


creamos la partición “ / “ la cual tomará todo el espacio sobrante en el disco.
Luego pulsamos añadir punto de montaje.

27
Debería quedar de esta manera la partición recomendada para luego de
culminar la instalación procedemos a instalar Postgres

Verificamos el resumen de cambios, que creará las particiones y formateará


con el sistema de archivos que seleccionamos, toda la estructura del disco para
que sean almacenados los datos dentro de ese disco en cada partición,
pulsamos aceptar cambios.

28
Para comenzar la instalación presionamos en el botón Empezar instalación.

Durante la instalación podemos cambiar la contraseña de root y también crear


nuevos usuarios, procedemos a cambiar la contraseña de Root por (Centos7)

29
Al cambiar la contraseña el asistente nos advierte que la contraseña
proporcionada es débil, como es para realizar prácticas académicas podemos
utilizar esta contraseña, pero es recomendable utilizar siempre una contraseña
más robusta.

¡Una vez finalizado aparece el mensaje Completado!, presionamos el botón


Reiniciar

Con el sistema operativo listo para las configuraciones del servidor, ingresamos
a la terminal.

30
Configuración del firewall.
Inhabilitaremos el firewall de lo contrario se le bloquearía todo en el sistema.
Para dar de baja al servicio del firewall, ejecutamos el siguiente comando:
“systemctl stop firewalld”

Ahora lo que haremos es que nuestro servicio ya no inicie con sistema


operativo cuando este se inicie nuevamente, para ello ejecutamos el siguiente
comando:

“systemctl disable firewalld”

Deshabilitamos el Selinux

Abrir el archivo de configuración con el siguiente comando:

#nano /etc/sysconfig/selinux

31
Una vez dentro modificamos el parámetro SELINUX que se encuentra en el
archivo y colocamos disabled, debería quedar SELINUX=disabled

Configuración del NetworkManager.


El tercer paso será inhabilitar Network-Manager ya que de lo contrario no me
funcionaria los servicios de red por la terminal. Para ello escribimos el
comando:

“systemctl stop NetworkManager”

Ahora inhabilitaremos el servicio para que no vuelva a levantar con el sistema


operativo, para esto utilizaremos el siguiente comando:

“systemctl disable NetworkManager”

32
Configuramos la tarjeta de red para poder realizar la instalación Ingresamos a
la carpeta de configuración de la tarjeta y listar las conexiones

#cd /etc/sysconfig/network-scripts

#ls

Verificamos que la tarjeta de red tiene el nombre ifcfg-enp0s3 y procedemos a


configurar la tarjeta dentro de la carpeta network-scripts

#nano ifcfg-enp0s3

Agregamos la dirección IP, NETMASK, GATEWAY, DNS1, DNS2, quedando


de esta manera.

33
Instalación y preparación de los paquetes necesarios para
PostgreSQL

Verificamos los paquetes disponibles para instalar postgresql con el siguiente


comando:

#yum list postgresql*

Instalamos Postgresql desde el repositorio de Centos. Ejecutamos el


siguiente comando:

#yum install postgresql10-server postgresql-10

34
Luego nos pregunta si deseamos descargar e instalar, confirmamos con la letra
“y” (yes)

Una vez instalado verificamos que se haya instalado con el siguiente comando
#rpm –qa | grep postgres

Inicializamos la base de datos

#postgresql-setup initdb

35
Ahora debemos habilitar el servicio postgresql-10 para que inicie junto con
CentOS 7, con el comando:

systemctl enable postgresql-10.service

Después verificamos si está habilitado el servicio con el comando:

systemctl is-enabled postgresql-10.service

Ahora iniciamos el servicio con el comando:

systemctl start postgresql-10.service

Verificamos si el servicio está activado y en funcionamiento usando el


comando:

systemctl status postgresql-10.service

36
Por último, ingresamos a postgres y cambiamos la contraseña del superusaurio
#su – postgres

psql

\password postgres

Para salir de la base de datos escribimos \q y luego exit

Ahora procedemos a hacer una restauración de base de datos, en este caso es


la base de datos redes.backup, así que iniciamos sesión con el usuarios de
postgres usando los comandos:

su – postgres

psql

37
Creamos una nueva base de datos con el nombre hospital, usando el siguiente
comando:

create database hospital;

Nos conectamos a la base de datos hospital usando el comando:

\c hospital;

Restauramos a la copia de la base de datos usando el comando:

pg_restore -h localhost – 5432 -U postgres -d hospital -v


“/root/Descargas/redes.backup”

38
Verificamos si las tablas se copiaron exitosamente con el comando:

\dt

39
Configuración del servicio SSHD para conexión remota al
servidor CentOS 7.

SSH o Secure Shell, es un protocolo de administración remota que le


permite a los usuarios controlar y modificar sus servidores remotos a través
de Internet a través de un mecanismo de autenticación.

La forma en que funciona SSH es mediante el uso de un modelo cliente-


servidor para permitir la autenticación de dos sistemas remotos y el cifrado
de los datos que pasa entre ellos.

Prerrequisitos

a) Sistema CentOS 7 para actuar como un servidor SSH.


b) Un usuario con los permisos necesarios.
c) Acceso a la línea de comandos.
d) Herramienta YUM.

Instalación y habilitación de OpenSSH

Los paquetes de software SSH están incluidos en CentOS de manera


predeterminada. Sin embargo, si estos paquetes no están presentes en su
sistema, instalaremos de la siguiente manera.

Instalación del paquete de software OpenSSH.

En la línea de comandos ingresaremos el siguiente comando: sudo yum -y


install openssh-server openssh-clients Este comando instalará tanto las
aplicaciones cliente de OpenSSH como el demonio del servidor OpenSSH,
SSHD.

40
Por seguridad hacemos una copia de seguridad de el archivo de configuración
del servicio SSH situado en el directorio /etc/ssh/ al directorio /root/, primero
ingresamos a su directorio con el siguiente comando:

cd /etc/ssh/

Ahora copiamos el archivo de configuración al directorio /root/ con el comando:

cp sshd_config /root/sshd_config.org

Ahora consultamos el estado del servicio SSHD con el comando:

systemctl status sshd

En el caso que se necesite detener, utilizaríamos:

systemctl stop sshd

Habilitar el servicio de OpenSSH Para habilitar SSH para inicie


automáticamente después de cada reinicio del sistema utilizaremos el comando
systemctl:

sudo systemctl enable sshd

Para deshabilitar SSH después de reiniciar, ingrese:

41
sudo systemctl disable sshd

Configuración del servidor OpenSSH


La configuración adecuada del archivo de configuración sshd fortalecerá la
seguridad del servidor. La configuración más común para mejorar la seguridad
es cambiar el número de puerto, deshabilitar los inicios de sesión de raíz y
limitar el acceso solo a ciertos usuarios.

Para editar esta configuración, accederemos al archivo /etc/ssh/sshd_config:


sudo vim /etc/ssh/sshd_config

Una vez que accede al archivo utilizando un editor de texto (en este ejemplo
usamos vim, también podríamos utilizar nano), deshabilitaremos los inicios de
sesión de raíz y editar el número de puerto predeterminado:

Para deshabilitar el inicio de sesión raíz:

PermitRootLogin no

Define una interfaz de red, muchos servidores tienen dos o más interfaces de
red y puedes limitar que ssh escuche por una interfaz de red ssh así limitar el
acceso a tu servidor.

Para hacer esto solo tienes que indicar la siguiente directiva:

ListenAddress 192.172.10.2

Cambiamos el puerto SSH para que se ejecute en un puerto no estándar. Por


ejemplo:

Puerto 2345

Otro punto importante es asegurarte que se utilice únicamente la versión 2 del


protocolo con la siguiente línea:

Protocol 2

42
Recuerde des comentar las líneas que edita eliminando el # (hashtag).

En caso de tener apagado el servicio de firewall, lo iniciamos con los


siguientes comandos:

# systemctl start firewalld.service

Ahora habilitamos el servicio con el comando:

# systemctl enable firewalld.service

Consultamos el estado del firewalld.service con el comando:

# systemctl status firewalld.service

43
Si todo salió bien, recargamos el servicio del firewalld.service con la línea de
comando:

# systemctl restart firewalld.service

Ejecutamos el siguiente comando donde agregamos el puerto de forma


permanente y reiniciamos el firewall

# firewalld-cmd –permanent –zone=public –add-port=2345/tcp

#firewalld-cmd --reload

Guarde y cierre el archivo. Reinicie sshd:

service sshd restart

44
Verificamos la IP de nuestro servidor con el comando:

ifconfig

Ahora verificamos si tenemos conectividad con el servidor desde la terminal de


Windows con el cmd, usando el comando:

ping 192.168.0.28

45
Ahora intentaremos ingresar al servidor desde el programa PuTTY que es un
emulador de terminal gratuito que admite varios protocolos de red tal como
SSH

Introduciendo la IP del servidor al que queremos conectarnos junto con el


nombre del usuario de esta forma “alan@192.168.0.28”, luego el puerto SSH el
cual es el “2345”.

Ahora ingresamos con nuestra contraseña de usuario, en este caso es:


“centos7”, desde ahí también podemos ingresar como usuario root con el
comando:

Su – root

46
Configuración de conexiones de los usuarios para los accesos
remotos al motor de base de datos Postgres.
Por defecto, PostgreSQL está configurado para estar vinculado a "localhost".
Para habilitar el acceso remoto al servidor PostgreSQL:

Obtener la ubicación del archivo postgres.conf ejecutando el comando (la


ubicación debería ser algo así como /var/lib/pgsql/data/postgresql.conf):

# find / -name "postgresql.conf"

47
Abrir el archivo (con vim o nano) postgresql.conf y agregar la siguiente línea
al final: listen_addresses = '*'

48
Agregar la siguiente línea al final del archivo /var/lib/pgsql/data/pg_hba.conf:

host all all 0.0.0.0/0 md5

md5 es el método de autenticación, que requiere que el cliente proporcione


una contraseña doble hash MD5 para la autenticación.

Reinicie el servidor PostgreSQL para aplicar los cambios:

# service postgresql restart

49
Agregamos el puerto de postgresql de forma permanente y reiniciamos el
firewall con el comando:

# firewall-cmd –zone=public –add-port=5432/tcp --permanent

# firewall-cmd --reload

Probamos el acceso remoto a la base de datos postgres.

Empezamos creando un Grupo de servidores con el nombre de redes2.

50
Seleccionamos el Grupo de servidores que creamos y pulsamos el clic derecho
para crear una nueva conexión a la base de datos de postgres.

51
En el apartado General ingresamos el nombre para la base de datos, en
Connection ingresamos nuestra ip, el puerto, el usuario de la base de datos y
la contraseña del mismo, clic en save.

Ahora podemos ver que ya nos aparece la base de datos que tenemos en
nuestro sistema operativo CentOS7 en Windows.

52
Gestión de Usuarios en PostgreSQL
Con PostgreSQL, puede crear usuarios y roles con permisos de acceso
granulares. Al nuevo usuario o rol se les debe conceder selectivamente los
permisos necesarios para cada objeto de base de datos. Esto da mucho poder
al usuario final, pero al mismo tiempo, dificulta potencialmente el proceso de
creación de usuarios y roles con los permisos correctos.

Crear usuario con el comando:

# CREATE USER grupo2 WITH PASSWORD ‘123’ ;

Cambiar contraseña con el comando:

# ALTER USER grupo2 WITH PASSWORD ‘centos7’ ;

Borrar un usuario, con el comando:

# DROP USER grupo2;

Crear una base de datos, con el comando:

# CREATE DATABASE prueba;

Borrar una base de datos, con el comando:

# DROP DATABASE prueba;

53
Dar permisos a un usuario en PostgreSQL

Una vez creado el usuario y la base de datos dentro del contenedor que
ejecuta el sistema gestor SQL el siguiente paso es otorgar permisos al usuario
sobre dicha base de datos. Hay toda una gama amplia de permisos que
pueden tener los usuarios, para afinar con mucha precisión qué puede hacer
cada uno de ellos y que estará prohibido. Esta granularidad ofrece mucho
control y seguridad sobre los datos que se almacenan. Por ejemplo, algunos de
los permisos que se usan con frecuencia son:

a) ALL, otorga todos los permisos sobre la base de datos.


b) ALTER, permite modificar tablas, secuencias, etc…
c) CREATE, permite crear tablas, secuencias, etc…
d) DROP, permite borrar tablas, secuencias, etc…
e) DELETE, permite borrar registros en tablas.
f) INSERT, permite insertar registros tablas.

54
g) UPDATE, permite actualizar registros en tablas.
h) SELECT, permite consultar tablas, secuencias, etc…

En la mayoría de las ocasiones, si tenemos un usuario por base de datos, será


suficiente con dar el permiso ALL, o como mínimo los necesarios para manejar
los registros de la base de datos. Sea como fuere, para dar permisos a un
usuario sobre una base de datos deberíamos escribir la siguiente sentencia
SQL:

# GRANT ALL PRIVILEGES ON DATABASE prueba to grupo2;

Esta sentencia asigna todos los permisos sobre todos los objetos de la base de
datos prueba A partir de ese momento el usuario podrá crear, modificar o
borrar objetos como tablas, secuencias, etc. Y también operar con las tablas y
los registros que contienen pudiendo insertar, actualizar, consultar y borrar las
filas que contienen

Revocar permisos a un usuario en PostgreSQL

La eliminación de permisos sobre un usuario se hace de forma análoga a la


dotación de acceso, pero en este caso se usa la palabra clave revoke de la
siguiente manera:

# REVOKE ALL PRIVILEGES ON DATABSE prueba FROM grupo2;

PostgreSQL le permite conceder permisos directamente a los usuarios de la


base de datos. Sin embargo, como práctica recomendada, se recomienda crear
varios roles con conjuntos específicos de permisos basados en los requisitos
de aplicación y acceso. Paso seguido, asigne el rol apropiado a cada usuario.

55
Los roles deben utilizarse para aplicar un modelo de privilegios mínimos para
acceder a objetos de base de datos.

A continuación, se mostrarán ejemplos de creación y asignación de roles Rol


de solo lectura.

El primer paso consiste en crear un nuevo rol denominado readonly mediante


la siguiente instrucción SQL:

CREATE ROLE readonly;

Este es un rol simple sin permisos ni contraseña. No se puede utilizar para


iniciar sesión en la base de datos.

Conceda permiso a este rol para conectarse a la base de datos de destino


denominada “mydatabase”:

GRANT CONNECT ON DATABASE mydatabase TO readonly;

56
El siguiente paso es otorgar acceso al uso de este rol a su esquema.
Supongamos que el esquema se llama myschema:

GRANT USAGE ON SCHEMA myschema TO readonly;

En este paso se concede permiso de rol de readonly para realizar alguna


actividad dentro del esquema. Sin este paso, el rol readonly no puede realizar
ninguna acción en los objetos de este esquema, incluso si se han concedido
permisos para esos objetos.

El siguiente paso consiste en otorgar acceso al rol readonly para ejecutar las
consultas en las tablas requeridas.

GRANT SELECT ON TABLE mytable1, mytable2 TO readonly;

Si el requisito es conceder acceso a todas las tablas y vistas del esquema,


puede utilizar el siguiente SQL:

GRANT SELECT ON ALL TABLES IN SCHEMA myschema TO readonly;

La instrucción SQL anterior otorga acceso SELECT al rol de solo lectura en


todas las tablas y vistas existentes en el esquema llamado myschema. Tenga
en cuenta que el usuario readonly no podrá acceder a las tablas nuevas que
se añadan en el futuro.

Para garantizar que también se pueda acceder a nuevas tablas y vistas,


ejecute la siguiente instrucción para conceder permisos automáticamente:

ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT


ON TABLES TO readonly;

Rol de lectura y escritura.

El proceso de agregar un rol de lectura/escritura es muy similar al proceso de


rol de solo lectura que se trató anteriormente. El primer paso es crear un rol:

CREATE ROLE readwrite;

Conceda permiso a este rol para conectarse a la base de datos de destino:

57
GRANT CONNECT ON DATABASE mydatabase TO readwrite;

Conceda privilegio de uso de esquemas:

GRANT USAGE ON SCHEMA myschema TO readwrite;

Si desea permitir que este rol cree nuevos objetos como tablas de este
esquema, utilice el siguiente SQL en lugar del anterior:

GRANT USAGE, CREATE ON SCHEMA myschema TO readwrite;

El siguiente paso es conceder acceso a las tablas. Como se mencionó en la


sección anterior, la concesión puede realizarse en tablas individuales o en
todas las tablas del esquema. Para tablas individuales, utilice el siguiente SQL:

GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE mytable1,


mytable2 TO readwrite;

Para todas las tablas y vistas del esquema, utilice el siguiente SQL:

GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA


myschema TO readwrite;

Para conceder automáticamente permisos sobre tablas y vistas añadidas en el


futuro:

ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT SELECT,


INSERT, UPDATE, DELETE ON TABLES TO readwrite;

Para los roles de lectura y escritura, normalmente existe el requisito de utilizar


secuencias también. Puede dar acceso selectivo de la siguiente manera:

GRANT USAGE ON SEQUENCE myseq1, myseq2 TO readwrite;

También puede conceder permiso a todas las secuencias mediante la siguiente


instrucción SQL:

GRANT USAGE ON ALL SEQUENCES IN SCHEMA myschema TO


readwrite;

58
Para conceder permisos automáticamente a las secuencias añadidas en el
futuro:

ALTER DEFAULT PRIVILEGES IN SCHEMA myschema GRANT USAGE ON


SEQUENCES TO readwrite;

Puede conceder más o menos permisos en función de los requisitos. La


documentación del comando GRANT de PostgreSQL proporciona más
detalles sobre los objetos en los que se pueden conceder permisos y las
sentencias SQL necesarias.

Revocar o cambiar los permisos de usuario.

Utilizando el método documentado anteriormente, resulta muy fácil revocar los


privilegios de un usuario. Por ejemplo, puede quitar el permiso de lectura y
escritura (readwrite) de myuser1 utilizando la siguiente instrucción SQL:

REVOKE readwrite FROM myuser1;

Del mismo modo, puede otorgar un nuevo rol de la siguiente manera:

GRANT readonly TO myuser1;

Automatizar copias de seguridad con Crontab.

Cron es un demonio (que es como se conoce a un proceso en segundo plano)


que se ejecuta desde el mismo instante en el que arranca el sistema operativo.
Cron se encargará de comprobar si existe alguna tarea (job) para ser
ejecutada, de acuerdo a la hora configurada en el propio sistema operativo. Es
muy importante que la hora esté bien configurada, y también la zona horaria,
de lo contrario, las ejecuciones que realice Cron no se corresponderán con
nuestras configuraciones.

Crontab es un archivo de texto, se trata de un archivo con un contenido


especial y específicamente diseñado para que sea leído correctamente por

59
Cron y proceder con la ejecución que nosotros hayamos programado. Crontab
posee una lista con todos los scripts a ejecutar, generalmente cada usuario del
sistema posee su propio fichero Crontab, de esta forma, cada usuario podría
programar sus propias tareas repetitivas independientemente, sin necesidad de
que siempre tengamos que acudir al usuario administrador. De esta forma,
cualquier usuario (incluyendo los administradores) podrán programar tareas
repetitivas para realizar diferentes ejecuciones.

Para generar el archivo propio, cada usuario deberá hacer uso del comando
«crontab» (sí, es el mismo nombre que la propia herramienta). Se utiliza
mucho para poder ejecutar y administrar tareas de Cron en un sistema.

Con Crontab, podrás configurar el archivo según unos parámetros


establecidos. Podrás poner un tiempo exacto para que ejecute la acción (o
múltiples tareas). Su nombre, como en el caso de Cronos, viene de la palabra
griega «tiempo», por lo que esa va a ser la clave de su funcionamiento.

Pasos para Automatizar copias de seguridad con Crontab.

Primero procedemos a instalar el cron mediante la herramienta yum, con el


comando:

# yum -y install yum-cron

60
Una vez instalado el cron, procedemos a editar el archivo de configuración
pg_hba.conf, con la siguiente línea:

# nano /var/lib/pgsql/10/data/pg_hba.conf

Nos aseguramos que la línea de comando local se vea de la siguiente manera.

61
El siguiente paso es crear un directorio dentro de /var/lib/pgsql con el nombre
a elección, en este caso backup, con el comando:

# mkdir /var/lib/pgsql/backup

Dentro de nuestro nuevo directorio, creamos un archivo de texto llamado


backup.sh, con el comando:

# nano /var/lib/pgsql/backup/backup.sh

Escribimos el siguiente script, el cual se ejecutará más adelante, ahí indicamos


el nombre de usuario de la base de datos junto con su respectiva contraseña y
al final se indica la ruta en dónde creamos nuestro script.

62
a) pg_dump es el comando en sí mismo.
b) -i le indica que ignore la versión (entre el comando y la base de datos).
c) -F indica el formato de salida.
d) c es la elección del formato (comprime en este caso).

Luego de guardar el archivo de texto, damos los permisos de lectura, escritura


y ejecución al backup.sh, con el siguiente comando:

# chmod 700 /var/lib/pgsql/backup/backup.sh

Ejecutamos el siguiente código para realizar las tareas programadas.

# crontab -e

Lo configuramos de la siguiente manera, aquí le decimos que ejecute el script


todos los días a las 02 de la mañana.

63
Salimos del archivo y nos saldrá el siguiente comando, el cual nos indica que
cron ejecutará el script. También podemos ejecutarlo de forma manual,
ubicándonos en la ruta en dónde creamos el script y escribiendo ./backup.sh

Procedimientos y restauración del Backups

64
Accedemos a postgres.

# su - postgres

Creamos una nueva base de datos, con el comando:

# CREATE DATBASE pruebaback;

Ingresamos dentro de la base de datos pruebaback.

# \c pruebaback;

Creamos una tabla;

#create table tabprueba

(id integer not null primary key,

Texto varchar not null);

Insertamos dentro de la tabla y luego vemos esos datos con un select

# INSERT INTO tabprueba VALUES (1, ‘texto1’), (2, ‘texto2’), (3, ‘texto3’);

65
# select * from tabprueba;

Salimos de postgres

# \q

$ exit

Creamos un directorio y nos ubicamos en el mismo.

# cd /root/Documentos/

# mkdir respaldopostgres

Realizamos el backup con el siguiente comando, luego ingresamos nuestra


contraseña.

# pg_dump -U postgres pruebaback > respaldodb.sql

Volvemos a ingresar a postgres y borramos la base de datos pruebaback.

# DROP DATABASE pruebaback;

66
Verificamos que se ha borrado con el comando \l, y como vemos ya no existe la
base de datos pruebaback.

# \l

Creamos nuevamente la base de datos pruebaback, ingresamos en ella y


verificamos que no tiene ninguna tabla en su interior.

# CREATE DATBASE pruebaback;

# \c preubaback;

# \d

Nos ubicamos dentro del directorio en donde se guardó el backup, en nuestro


caso fue dentro de /root/Documentos/respaldopostgres

67
# cd /root/ Documentos/respaldopostgres

# ls

Ahora realizamos la restauración de la copia de seguridad, si todo salió bien


nos saldrá una línea en dónde nos pedirá la contraseña del usuario, la
ingresamos y listo.

# sudo psql -U postgres -h localhost -d pruebaback -f respalsodb.sql

Verificamos que se hayan restaurado los datos correctamente, recordemos que


no había ninguna tabla dentro de pruebaback

68
Listamos las tablas que se encuentran dentro de pruebaback con \d, y como
vemos se ha restaurado correctamente desde la copia de seguridad.

También verificamos los datos que habamos ingresado dentro de la tabla


mediante un select * from tabprueba

Y vemos que si están todos los datos que ingresamos con anterioridad. De esa
manera se pueden hacer de forma sencilla los backups así como la
restauración de la base de datos postgres.

Prueba del Sistema de Gestión desde un cliente

69
Aquí se podrá utilizar un sistema ya sea de escritorio o web, en este caso será
web, la intención es realizar una conexión y cargar datos en la base de datos
remota postgres.

Para modo de prueba utilizaremos un sistema ya en proceso con su respectiva


base de datos, lo que se hizo fue hacer un backup de la base de datos original
y la misma se restauró en la base de datos postgres de CentOS 7.

Anteriormente ya hicimos el acceso remoto a la base de datos postgres,


entonces el primer paso es asegurarnos de que podamos acceder de forma
remota.

El siguiente paso es ingresar dentro de Netbeans ya que en dicho programa es


el lugar en el cual estamos realizando el sistema web.

Lp3 es el nombre del sistema, el cuál es una copia de mi sistema original, ya


que es recomendable tener una copia para realizar pruebas, cambios, etc.

Luego en seleccionamos el archivo de conexión a nuestra base de datos


llamado “conexión.php” dentro de la carpeta clases, dentro de la otra carpeta
Soruce Files, y realizamos una nueva conexión.

70
Abrimos el archivo “conexión.php”, donde en la parte de Host agregaremos
la IP de nuestro servidor de Centos7, el puerto de postgres, el nombre de la
base de datos al que queremos conectarnos, el usuario su contraseña.

Guardamos los cambios ingresados con CTRL + S.

Ahora ingresamos a nuestro sistema web, y probamos la conexión a la base de


datos, e iniciamos sesión con nuestro usuario y contraseña, si la conexión fue
bien configurada entrará al sistema, de los contrario saltará un error.

71
La conexión a la base de datos dentro de nuestro Centos7 ha sido un éxito.

Ahora seleccionamos la tabla artículos que está dentro de los referenciales.

72
Como ejemplo utilizaremos la tabla de artículos, donde insertaremos un nuevo
artículo llamado “pantalón”.

Verificamos en nuestra base de datos.

73
Verificamos si la inserción se realizó de la forma correcta.

Ahora verificamos en la base de datos con el comando:

# SELECT * FROM articulo;

Efectivamente se ingresaron los datos de forma correcta. Y es de esa forma


como podemos cargar datos desde nuestro sistema al motor de base de datos
remoto postgres.

74
Conclusión

El sistema de gestión de base de datos PostgreSQL resulta ser muy útil y


eficiente como motor de base de datos, requerido por más empresas a diario,
buscan un servidor de base de datos con alta capacidad, rendimiento y estable
para poder sostener grandes contenedores de datos. VirtualBox es una
herramienta de virtualización, el cual fue la base para empezar este proyecto
ya que en ella ejecutamos el sistema operativo CentOS 7 y en dicho sistema
implementamos el servidor de base de datos PostgreSQL en su versión 10.

Recopilamos la información necesaria para realizar las configuraciones para la


implementación del servidor, así como también la instalación de paquetes y la
gestión de particiones para PostgreSQL. Además de las configuraciones del
SSH para mayor seguridad, las configuraciones de conexión de los usuarios
para los accesos a PostgreSQL.

También hemos puesto a prueba las copias de seguridad automáticas con el


demonio crontab así como la restauración de backup en la base de datos. En
cuanto a las pruebas de gestiones a través de un cliente hemos visto cómo
manejar nuestra base de datos creado en CentOS 7 desde nuestro sistema
web que está en Windows, lo cual nos será de mucha utilidad el momento de
trabajar en nuestros sistemas en un futuro. En base a los resultados de las
pruebas y configuraciones concluimos que el VirtualBox tiene uno de los
mejores esquemas de escritura en disco, lo cual resulta en que el programa se
ejecute más rápido. Ya en este punto de la documentación podemos decir que
los objetivos que nos hemos propuestos han sido cumplidos de la mejor
manera.

75
Bibliografía

 ADMINISTRACIÓN DE BASES DE DATOS CON POSTGRESQL. Por


Mariuxi Paola Zea Ordóñez, Jimmy Rolando Molina Ríos, Fausto Fabían
Redrován Castillo. url:
https://books.google.com.py/books?id=5-
mkDgAAQBAJ&pg=PA13&dq=postgres+que+es&hl=es-
419&sa=X&ved=2ahUKEwiyz9uvha74AhXZqJUCHUgvDfUQ6AF6BAgK
EAI#v=onepage&q=postgres%20que%20es&f=false
 VirtualBox: qué es y cómo usarlo para crear una máquina virtual
con Windows u otro sistema operativo. Por Yúbal Fernández, . url:
https://www.xataka.com/basics/virtualbox-que-como-usarlo-para-crear-
maquina-virtual-windows-u-otro-sistema-operativo
 ADMINISTRACIÓN DE USUARIOS Y ROLES DE POSTGRESQL. Por
Yaser Raja, Consultor Senior con equipo de Servicios Profesionales en
AWS. Publicado el 19 de Agosto del 2021. url:
https://aws.amazon.com/es/blogs/aws-spanish/managing-postgresql-
users-and-roles/
 Gestión de usuarios en PostgreSQL. Por Ramón Arnau. Publicado en
Septiembre del 2020 url:
https://www.arteco-consulting.com/post/gestion-de-usuarios-en-
postgresql
 Backup automático de PostgreSQL en CentOS. Publicado en
NOVIEMBRE 13, 2017 POR ANDRÉS SOSA url:
https://creativapixel.com/backup-automatico-de-postgresql-en-centos/

76

También podría gustarte