Introducción a los Sistemas Gestores de Bases de Datos:
En este artículo veremos como se instalan y se configuran los distintos Sistemas Gestores de Bases de Datos en equipos Debian 12. Este proceso dependiendo de qe gestor estemos hablando, puede ser más o menos complejo.
Un sistema gestor de bases de datos (SGBD) es un software que facilita la creación, administración y manipulación de bases de datos. Permite a los usuarios almacenar, organizar y consultar grandes volúmenes de datos de manera eficiente y segura. Los SGBD ofrecen herramientas para gestionar la integridad y seguridad de los datos, realizar consultas complejas y generar informes, entre otros servicios.
Objetivo:
La misión principal es como instalar y configurar en equipos Debian 12, los siguientes SGBD:
-
Oracle 19c.
-
PostgreSQL.
-
MariaDB.
-
MongoDB.
Instalación de Oracle 19c en Debian 12:

Oracle originalmente no está pensado para ser instalado el sistemas Debian , sino para distribucaiones RedHat y equivalentes con paquetes RPM . Así que el primer paso es transformar el paquete RPM a un paquete DEB gracias a la herramienta Alien.
Para instalar alien en nuestro equipo Debian:
sudo apt install alien
Con alien instalado hay que descargar el paquete RPM de Oracle, desde su página web:

Para transformar el paquete de rpm a deb (tarda bastante):
alien -c --scripts oracle-database-ee-19c-1.0-1.x86_64.rpm
Con el paquete preparado ahora es momento preparar el sistema.
Preparación del Sistema
Con el paquete descargado es momento de preparar el equipo para la instalación:
Dependecias:
Para que Oracle funcione correctamente, se necesita instalar siguientes dependencias:
sudo apt install bc ksh libaio1 gawk
bc
: Calculadora de precisión arbitraria para realizar cálculos matemáticos complejos desde la terminal.ksh
: Intérprete de comandos (shell) de Unix que proporciona un entorno avanzado para scripting.libaio1
: Biblioteca para realizar operaciones de entrada/salida asíncrona, mejorando el rendimiento de aplicaciones de disco.gawk
: Implementación del lenguajeawk
para procesamiento y manipulación de datos en texto.

Por otra parte necesita la herramienta netstat. Para ver a que paquete pertenece:
sudo apt install apt-file
sudo apt-file update
sudo apt-file search netstat | grep bin/netstat$

Como se ve, pertenece al paquete net-tools, así que procedemos a instalarlo:
sudo apt install net-tools
Configuraciones Previas:
También hay que configurar una serie de parámetros que son:
Darle una ip estatica al equipo:
sudo nano /etc/network/interfaces
Con el siguiente contenido (estos son mis datos, modificar según la necesidad):
auto enp1s0
iface enp1s0 inet static
address 192.168.122.123
netmask 255.255.255.0
gateway 192.168.122.1
sudo systemctl restart network

Declarar la misma ip en el archivo hosts:
sudo nano /etc/hosts

Crear el grupo dba, y el usuario oracle y añadir tanto oracle como a debian al grupo dba.
sudo groupadd dba
sudo useradd -m -g dba -s /bin/bash oracle
sudo passwd oracle
sudo usermod -aG dba debian
sudo usermod -aG dba oracle
O tambien:
sudo groupadd dba
sudo adduser --ingroup dba oracle
sudo passwd oracle
sudo adduser debian dba

Instalación y configuración
Con el equipo preparado, es momento de instalar el paquete convertido a deb con dpkg:
sudo dpkg -i oracle-database-ee-19c_1.0-2_amd64.deb

Luego de la instalación para configurar Oracle hay que utilizar un script que trae por defecto que esta en /etc/init.d/oracledb_ORCLCDB-19c
con el parámetro configure:
sudo /etc/init.d/oracledb_ORCLCDB-19c configure

Pero dará un error porque hay que modificar una línea, en la sección configure_perform , como se ve en la imagen:
-J-Doracle.assistants.dbca.validate.ConfigurationParams=false

Ahora sí, al ejecutar el script, arranca sin problemas:
sudo /etc/init.d/oracledb_ORCLCDB-19c configure
Con todo lo anterior configurado, al ejecutarlo ya funciona y se configura sin problemas:

Por último hay que declarar las variables de entorno de oracle al final del archivo ~/.bashrc
:
sudo nano /home/debian/.bashrc
Con este contenido:
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export ORACLE_SID=ORCLCDB
export ORACLE_BASE=/opt/oracle
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$PATH

Y aplico los cambios con:
source ~/.bashrc
. ~/.bashrc
Usando Oracle:
Para conectarse a la base de datos como sysdba es con el comando:
sqlplus / as sysdba

- Lo que conecta automáticamente y permite entrar en la base de datos (si falla comprobar que el usuario esta dentro del grupo dba, y que tenga las variables correctas).
El siguiente paso antes de empezar a usar Oracle, hay que modificar la sesión con para permitir la creación de usuarios y demás funciones en la sesión actual:
alter session set "_ORACLE_SCRIPT=true;

Ahora he creado un usuario y le he dado algunos privilegios de ejemplo (luego fueron modificados), le tuve que cambiar la contraseña y posteriormente ya me dejó entrar (el usuario lleva comillas al ser minúscula, ya que sin ellas me lo detectaba como mayúsculas y no funcionaba):


He creado una tabla de ejemplo de videojuegos para esta parte:

Configuración del Cliente Remoto:
En el cliente remoto, en este caso Debian también, lo primero es descargar sqlplus de su página, en mi caso los 2 paquetes zip:

Estos zip hay que descomprimirlos en el directorio /opt/oracle
(si no existe como es mi caso, crearlo manualmente) y declarar las variables de entorno de oracle nueva:
sudo unzip instantclient-sqlplus-linux.x64-21.4.0.0.0dbru.zip
export LD_LIBRARY_PATH=/opt/oracle/instantclient_21_4:$LD_LIBRARY_PATH
export PATH=$LD_LIBRARY_PATH:$PATH
source ~/.bashrc

El siguiente paso es habilitar las conexiones remotas iendo al archivo /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
desde la máquina servidor, y en la parte de host ponerlo todo a 0.0.0.0
.

De nuevo en el servidor, hay que poner en escucha a oracle y para ello es con lsnrctl
(si falla porque no se encuentra es porque no estan bien configurados los parametros de la red o las variables).
lsnrctl start

Y por último en el cliente, hay que ir al mismo archivo que en el servidor (si no existe se crea y se deja con el siguiente contenido) poniendo la ip del servidor:


Y para conectarse desde el cliente al servidor es con:
sqlplus usuario/pass@//ip:puerto/bbdd
Si falla, hay que ingresar el usuario en mi caso andres, y en el campo de la contraseña pass@//ip:puerto/bbdd, es decir:
sqlplus "andres"/debian12345.@//192.168.122.123:1521/ORCLCDB
Todo eso en el campo de la contraseña. En mi caso tuve que poner “andres” por el tema de las minúsculas que explique antes.

Como se ve en la imagen de arriba, desde el cliente se puede conectar a la base de datos y hacer una consulta sobre la tabla de videojuegos que cree antes en el servidor.
Para finalizar, hay que recordar que cada vez que se inicie el sistema hay que iniciar oracle con:

Instalación de PostgreSQL en Debian 12:

PostgreSQL es un sistema de gestión de bases de datos relacional y orientado a objetos.
Desarrollado como software de código abierto , es una gran alternativa, ya que entre sus funcionalidades, se incluyen la gestión de transacciones, recuperación ante fallos, replicación y soporte para extensiones, lo que lo convierte en una opción ideal tanto para pequeñas aplicaciones como para grandes sistemas empresariales.
Instalación y configuración:
Para instalar Postgresql en un equipo basado en Debian , es mucho más sencillo que el caso de Oracle , ya que se encuentra en los mismos repositorios:
sudo apt install postgresql

Ahora compruebo que no ha habido errores durante la instalación:
sudo service postgresql status

Usando Postgre:
Con todo funcionando correctamente, he accedido a la base de datos y le he modificado la contraseña al usuario postgres. También he creado un usuario y le he dado privilegios (como prueba):
sudo -u postgres psql
alter user postgres with password 'debian12345';

Luego he creado la base de datos practica3 y he creado la misma tabla de antes:
create database practica3;
c\ practica 3
- Donde
c\
es para usar la base de datos recién creada.

Y le he añadido algunos datos:

Ahora voy a configurar un usuario llamado andres
:
create user andres with password 'debian12345';
En el archivo /etc/postgresql/15/main/pg_hba.conf
hay que añadir la línea para el usuario andres pueda conectarse remotamente a la base de datos llamada practica3. Hay que añadirlo al final del archivo y reiniciar el servicio:
sudo nano /etc/postgresql/15/main/pg_hba.conf
Añadiendo en mi caso:
host practica3 andres 0.0.0.0/0 scram-sha-256
Reinicio para aplicar los cambios:
sudo systemctl restart postgresql
O también:
sudo service postgresql restart

Y por último le doy privilegios sobre la tabla videojuegos con:
c\ practica3
grant select, insert, update, delete on table videojuegos to andres;
- Esta tabla, pertenece a la base de datos antes creada practica3.


Configuración del Acceso Remoto:
Para configurar el acceso remoto y que los clientes puedan conectarse al servidor Postgres, hay que configurarlo para escuchar (en este caso, la mejor opción es solamente añadir los equipos remotos, para más seguridad) en todas las direcciones ip. Para ello, hay que modificar el archivo de configuración /etc/postgresql/15/main/pg_hba.conf
y descomentar la parte de listen_addresses
que viene comentada por defecto, quitando el localhost y añadir '*'
.

El siguiente paso, para permitir las conexiones remotas es modificar el archivo /etc/postgresql/15/main/pg_hba.conf
y añadirle mi red que es 192.168.122.0/24
(en esta captura no aparece el usuario andres porque fue tomada antes de crearlo).

Y reinicio postgres, para aplicar cambios:
sudo service postgresql restart

Configuración del Cliente Remoto:
Ahora toca instalar en el cliente, el paquete postgresql-client
:
sudo apt install postgresql-client

Y para conectarnos remotamente al servidor es de la siguiente manera:
psql -h ip -p puerto -U usuario -d basededatos
En este ejemplo, me he conectado con el usuario postgres . Pero en la siguiente lo haré con el usuario andres.
psql -h 192.168.122.123 -p 5432 -U postgres -d practica3
-
La ip, es la del servidor donde hemos instalado Postgre.
-
Usa el puerto 5432 (opcional), con el usuario postgres conectandome a la base de datos practica3.

Y por último para conectarme con el usuario andres (ya configurado más arriba):

Y de esta manera se instala Postgresql y se permite el acceso de usuarios remotos. Hay muchas más configuraciones, esto es una instalación y uso simple.
Instalación de Mariadb en Debian 12:

MariaDB es un sistema de gestión de bases de datos derivado de MySQL con licencia GPL (General Public License). Es desarrollado por Michael (Monty) Widenius fundador de MySQL, la fundación MariaDB y la comunidad de desarrolladores de software libre.
Introduce dos motores de almacenamiento nuevos, uno llamado Aria (que reemplaza a MyISAM) y otro llamado XtraDB (en sustitución de InnoDB).
Tiene una alta compatibilidad con MySQL ya que posee las mismas órdenes, interfaces, API y bibliotecas, siendo su objetivo poder cambiar un servidor por otro directamente
Instalación y configuración:
Para instalar Mariadb, es de la misma forma que Postgre, ya que se encuentra tambien dentro de los repositorios.
sudo apt install mariadb-server
Una vez instalado, inicio el servicio de MariaDB, para ponerlo en funcionamiento:
sudo systemctl start mariadb
Y de paso lo habilito para que se inicie automáticamente al arrancar (si fuera necesario):
sudo systemctl enable mariadb


El siguiente paso es configurarlo de manera segura con sudo mysql_secure_installation
lo cual hará una serie de preguntas, como por ejemplo, la contraseña de root, eliminar usuarios anónimos, evitar el acceso de remoto de root, etc:
sudo mysql_secure_installation


Ahora, me conecto como root y creo al usuario andres con el % para que pueda conectarse remotamente, y le doy privilegios para que pueda ver esa base de datos llamada practica3
, creada con:
sudo mysql -u root
create database practica3;
create user 'andres'@'%' identified by 'contraseña';
grant all privileges on practica3.* to 'andres'@'%' identified by 'debian12345';
flush privileges;
- En la cual tengo una tabla de videojuegos para comprobar que se tiene acceso.


Luego de darle privilegios, hacer un flush privileges
para aplicar.
Me conecto con el usuario andres
, usando esa base de datos y la tabla:
sudo mysql -u andres -p
use practica3;
select titulo from Videojuegos;

Configuración de Acceso Remoto:
Como expliqué también en la práctica de herramientas de fortaleza de contraseñas, para habilitar el acceso remoto en Mariadb, hay que modificar el archivo /etc/mysql/mariadb.conf.d/50-server.cnf
y poner 0.0.0.0
en la sección de bind-address para permitir cualquier conexión.
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Y reinicio Mariadb para que se aplique:
sudo systemctl restart mariadb.service

Configuración del Cliente Remoto:
En el equipo cliente, hay que instalar mariadb-client para permitir conectarse al servidor:
sudo apt install mariadb-client
Para conectarse al servidor que tiene la ip 192.168.122.123, y poder listar la tabla Videojuegos creada antes:

- Nota: la máquina servidor se llama debianbbdd y la cliente debian.
Instalación de MongoDB en Debian 12:

MongoDB es un sistema de base de datos NoSQL, orientado a documentos y de código abierto.
En lugar de guardar los datos en tablas, tal y como se hace en las bases de datos relacionales, MongoDB guarda estructuras de datos BSON (una especificación similar a JSON) con un esquema dinámico, haciendo que la integración de los datos en ciertas aplicaciones sea más fácil y rápida.
MongoDB es una base de datos adecuada para su uso en producción y con múltiples funcionalidades. Esta base de datos se utiliza mucho en la industria, contando con implementaciones en empresas como MTV Network,2 Craigslist,3 Foursquare.4
El código fuente está disponible para los sistemas operativos Windows, GNU/Linux, OS X y Solaris.
MongoDB no usa tablas , en su lugar utiliza documentos en los cuales, se añaden en las colecciones:
Preparación del Sistema:
Para poder instalar Mongodb se puede hacer desde su web o desde la línea de comandos, en mi caso lo he hecho desde la linea de comandos. Lo primero es obtener la clave gpg y añadir el repositorio de mongodb a nuestro equipo:
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/mongodb-server-7.0.gpg
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

Pero personalmente me daba error, así que buscando en la página de Mongo:
https://www.mongodb.com/community/forums/t/mongo-6-x-on-debian-12/232593/4
Encontré la solución que fue crear este repositorio con el siguiente contenido:
deb https://repo.mongo.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse

- Que el repositorio forme parte de Ubuntu, no afecta para nada en este caso. El equipo donde se ha instalado es Debian 12.
Instalación y configuración:
Ahora sí, con el repositorio funcionando y habiendo hecho un apt update, procedo a instalar Mongodb con:
sudo apt update
sudo apt install -y mongodb-org

Inicio el servicio y compruebo el estado para que no haya errores:
sudo systemctl start mongod.service
sudo systemctl status mongod.service

Usando Mongosh:
Ahora entro al sistema con mongosh
:
mongosh
Creo el usuario andres (como admin para hacer pruebas):
db.createUser(
{
user: "andres",
pwd: "debian12345",
roles: ["readWrite", "dbAdmin"]
}
)

También he creado un documento de prueba en la colección videojuegos:
db.videojuegos.insertOne({
titulo: "Super Mario Bros",
desarrolladora:: "Nintendo",
lanzamiento: new Date("1985-09-13"),
genero: "Plataformas",
plataforma: "NES"
})
Para poder ver el documento recien creado:
db.Videojuegos.find()
- Los datos que he introducido, en otros gestores se llaman tablas, aqui son documentos.

Si quisiera añadir otro documento, el proceso es el mismo, indicando el nombre de la colección que es Videojuegos, solo que al realizar la consulta con db.Videojuegos.find()
, obtendriamos los dos documentos del ejemplo, tanto “Super Mario Bros” como “The Legend of Zelda”.
db.videojuegos.insertOne({
titulo: "The Legend of Zelda",
desarrolladora: "Nintendo",
lanzamiento: new Date("1986-02-21"),
genero: "Aventura",
plataforma: "NES"
})
Devolviendo algo como esto:
db.Videojuegos.find()
[
{
"_id": ObjectId("..."),
"titulo": "Super Mario Bros",
"desarrolladora": "Nintendo",
"lanzamiento": ISODate("1985-09-13T00:00:00Z"),
"genero": "Plataformas",
"plataforma": "NES"
},
{
"_id": ObjectId("..."),
"titulo": "The Legend of Zelda",
"desarrolladora": "Nintendo",
"lanzamiento": ISODate("1986-02-21T00:00:00Z"),
"genero": "Aventura",
"plataforma": "NES"
}
]
Configuración para Acceso Remoto:
En Mongodb para habilitar las conexiones remotas es similar a Mariadb, hay que modificar su archivo de configuración /etc/mongod.conf
y editar la sección bindIp a 0.0.0.0
y authorization: 'enabled'
, guardar y reiniciar el servicio.
sudo nano /etc/mongod.conf
Modificando la sección bindIp, como ya he dicho por 0.0.0.0
para permitir todo (aunque no es recomendable, para este artículo es suficiente).
bindIp: 0.0.0.0

Para guardar los cambios y se apliquen, reinicio el servicio de mongodb, y compruebo que no haya errores:
sudo systemctl restart mongod.service
sudo systemctl status mongod.service

Configuración del Cliente Remoto:
En el quipo cliente hay que instalar mongosh
, en mi caso, lo he decargado de su web: https://www.mongodb.com/try/download/shell
eligiendo la version debx64 (sin arm) y lo he instalado con dpkg.
sudo dpkg -i mongodb-mongosh_2.0.2_amd64.deb

Para conectarse desde el cliente al servidor a la base de datos test
:
mongosh --host ip --username user --password pass --authenticationDatabase test
mongosh --hpst 192.168.122.123 --username andres --password debian12345 --authenticationDatabase test
Una vez dentro ya he podido hacer una consulta con db.videojuegos.find()
de la tabla que cree antes en el servidor.

Y de esta forma se consigue instalar Mongodb y desde un cliente conectarse a la base de datos del servidor.