Documentos de Académico
Documentos de Profesional
Documentos de Cultura
intercontinental UTIC
Licenciatura en Análisis de Sistemas
Informáticos
Alicia Medina.
Christian Colman.
Guillermo Cardozo.
Enmanuel Portillo.
Andrea Páez.
Fabrizzio Cespedes.
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
Ventajas de VirtualBox.....................................................................................................11
Desventajas de VirtualBox..............................................................................................11
Configuración del servicio SSHD para conexión remota al servidor CentOS 7....39
2
Rol de lectura y escritura....................................................................................................56
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
5
Reseña
6
PostgreSQL
¿Qué es PostgreSQL?
7
Centos 7
8
VirtualBox
9
Ventajas de PostgreSQL
10
Desventajas de PostgreSQL
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.
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
Desventajas de VirtualBox
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
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.
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.
16
Seleccionamos el tipo de tamaño que tendrá el disco duro, seleccionando la
opción “Reservado dinámicamente”.
17
Una vez creada la nueva máquina virtual ingresamos a la opción
Configuración.
18
Después seleccionamos Almacenamiento, y en Controlador IDE escogemos
el vacío, luego pulsamos en el icono del DVD.
19
Con esto terminado pulsamos el botón Aceptar.
20
Seleccionamos Install CentOS 7, presionando la tecla Control derecho para
ingresar a la máquina virtual y pulsamos la tecla Enter.
21
En la pantalla de resumen de la instalación pulsamos en Fecha y Hora.
22
Verificamos la configuración del teclado, pulsamos en teclado
23
Pulsamos en selección de software
24
Seleccionamos destino de la instalación.
25
En particionado manual, seleccionamos partición estándar, en la barra de
abajo pulsamos el icono de más “+”.
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.
27
Debería quedar de esta manera la partición recomendada para luego de
culminar la instalación procedemos a instalar Postgres
28
Para comenzar la instalación presionamos en el botón Empezar instalación.
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.
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”
Deshabilitamos el Selinux
#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
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
#nano ifcfg-enp0s3
33
Instalación y preparación de los paquetes necesarios para
PostgreSQL
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
#postgresql-setup initdb
35
Ahora debemos habilitar el servicio postgresql-10 para que inicie junto con
CentOS 7, con el comando:
36
Por último, ingresamos a postgres y cambiamos la contraseña del superusaurio
#su – postgres
psql
\password postgres
su – postgres
psql
37
Creamos una nueva base de datos con el nombre hospital, usando el siguiente
comando:
\c hospital;
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.
Prerrequisitos
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/
cp sshd_config /root/sshd_config.org
41
sudo systemctl disable sshd
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:
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.
ListenAddress 192.172.10.2
Puerto 2345
Protocol 2
42
Recuerde des comentar las líneas que edita eliminando el # (hashtag).
43
Si todo salió bien, recargamos el servicio del firewalld.service con la línea de
comando:
#firewalld-cmd --reload
44
Verificamos la IP de nuestro servidor con el comando:
ifconfig
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
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:
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:
49
Agregamos el puerto de postgresql de forma permanente y reiniciamos el
firewall con el comando:
# firewall-cmd --reload
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.
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:
54
g) UPDATE, permite actualizar registros en tablas.
h) SELECT, permite consultar tablas, secuencias, etc…
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
55
Los roles deben utilizarse para aplicar un modelo de privilegios mínimos para
acceder a objetos de base de datos.
56
El siguiente paso es otorgar acceso al uso de este rol a su esquema.
Supongamos que el esquema se llama myschema:
El siguiente paso consiste en otorgar acceso al rol readonly para ejecutar las
consultas en las tablas requeridas.
57
GRANT CONNECT ON DATABASE mydatabase TO readwrite;
Si desea permitir que este rol cree nuevos objetos como tablas de este
esquema, utilice el siguiente SQL en lugar del anterior:
Para todas las tablas y vistas del esquema, utilice el siguiente SQL:
58
Para conceder permisos automáticamente a las secuencias añadidas en el
futuro:
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.
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
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
# nano /var/lib/pgsql/backup/backup.sh
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).
# crontab -e
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
64
Accedemos a postgres.
# su - postgres
# \c pruebaback;
# INSERT INTO tabprueba VALUES (1, ‘texto1’), (2, ‘texto2’), (3, ‘texto3’);
65
# select * from tabprueba;
Salimos de postgres
# \q
$ exit
# cd /root/Documentos/
# mkdir respaldopostgres
66
Verificamos que se ha borrado con el comando \l, y como vemos ya no existe la
base de datos pruebaback.
# \l
# \c preubaback;
# \d
67
# cd /root/ Documentos/respaldopostgres
# ls
68
Listamos las tablas que se encuentran dentro de pruebaback con \d, y como
vemos se ha restaurado correctamente desde la copia de seguridad.
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.
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.
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.
71
La conexión a la base de datos dentro de nuestro Centos7 ha sido un éxito.
72
Como ejemplo utilizaremos la tabla de artículos, donde insertaremos un nuevo
artículo llamado “pantalón”.
73
Verificamos si la inserción se realizó de la forma correcta.
74
Conclusión
75
Bibliografía
76