Entorno¶
En esta páginas vamos a agrupar las herramientas que vamos a utilizar en el curso, con las instrucciones o comandos necesarios para su puesta en marcha.
Herramientas¶
Las herramientas que vamos a utilizar a lo largo del curso son:
- MariaDB: SGBD relacional basado en MySQL
- PhpMyAdmin: herramienta gráfica de gestión de MariaDB / MySQL
- PostgreSQL: SGBD relacional
- PgAdmin: herramienta gráfica de gestión de PostgreSQL
- Visual Studio Code: editor de texto/código
Docker
En este módulo vamos a utilizar Docker como herramienta para probar las bases de datos. En pocas palabras, Docker permite lanzar contenedores que contienen los servicios que necesitemos. En este módulo no vamos a aprender a crear contenedores, sólo a lanzar contenedores ya existentes.
Para ello, el primer paso es instalar Docker Desktop en tu ordenador.
MariaDB¶
MariaDB es un SGBD relacional basado en MySQL, ampliamente utilizado en el desarrollo de aplicaciones web y multiplataforma.
MariaDB dispone de un interfaz basada en páginas web llamada PhpMyAdmin, que a través de un servidor web, por ejemplo Apache, permite administrar las bases de datos de un servidor desde cualquier equipo de la red.
Este software dispone de opciones para realizar prácticamente cualquier operación que se pueda realizar vía SQL. Permite gestionar las bases de datos de un servidor, crear, borrar y modificar tablas, lanzar comandos SQL, exportar e importar información, recopilar estadísticas, hacer copias de seguridad, etc. Además dispone de un pequeño diseñador que permite gestionar las relaciones de las tablas.
Para lanzar tanto MariaDB com PhpMyAdmin mediante Docker, el primer paso es crear la definición de los dos contenedores en un archivo Docker Compose, el cual hemos llamado docker-compose-mariadb.yml
), donde además de la definición de ambos contenedores, configuraremos el usuario para acceder al SBGD, así como el volumen para los datos:
services:
mariadb:
image: mariadb:latest
container_name: mdb
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=pruebas
- MYSQL_USER=s8a
- MYSQL_PASSWORD=s8a
volumes:
- mariabd_data:/var/lib/mysql
phpmyadmin:
image: phpmyadmin
container_name: phpma
ports:
- 8080:80
environment:
- PMA_HOST=mariadb
depends_on:
- mariadb
volumes:
mariabd_data:
Para lanzar los contenedores, utilizaremos el siguiente comando:
docker compose -p mariadb-s8a -f docker-compose-mariadb.yml up -d
Cliente mariadb
¶
Primero nos conectamos al contenedor (el cual en el archivo docker-compose hemos llamado mdb
):
docker exec -it mdb bash
A continuación, con el cliente del SGBD, nos conectamos al servidor (al ser localhost
no hace falta que lo indiquemos) pasándole el usuario (-u nomusuario
) y la contraseña (-pcontraseña
)`:
mariadb -u s8a -ps8a pruebas
Y obtendremos información como que nos hemos conectado correctamente, y en la última línea muestra que ha conectado con la bd pruebas
:
root@e6dbf61ca4db:/# mariadb -u s8a -ps8a pruebas
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 11.4.2-MariaDB-ubu2404 mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [pruebas]>
Si quieres más información sobre como conectar con MariaDB y todos los parámetros disponibles, consulta la documentación oficial.
s8a superusuario
Si queremos evitar usar el usuario root
para crear bases de datos e importar esquemas, es muy cómodo configurar el usuario que hemos creado para que pueda acceder a todos los recursos. Para ello, una vez hemos entrado con root:
mariadb -u root -proot
Le damos todos permisos a todos los recursos al usuario s8a
:
GRANT ALL PRIVILEGES ON *.* TO 's8a'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
La gestión de permisos la estudiaremos en la unidad 9.- Lenguaje SQL: Control de Datos DCL y Transacciones TCL.
PhpMyAdmin¶
Para acceder a la interfaz gráfica de PhpMyAdmin, desde nuestro navegador web, nos conectamos a http://localhost:8080, donde veremos el interfaz de login, y entramos con el usuario s8a
y la contraseña s8a
que habíamos configurado previamente en la definición del contenedor.
Una vez dentro, en el menú lateral veremos las bases de datos a las cuales tenemos acceso, así como, una vez seleccionada una en concreto, las tablas con sus columnas e índices, y en la parte derecha, las diferentes opciones mediante el menú superior (desde herramientas para insertar o buscar registros, como importar o exportar los datos u obtener una representación gráfica del modelo físico):
Aprendiendo PhpMyAdmin
Aunque en la red existen multitud de recursos con artículos y tutoriales sobre PhpMyAdmin, a lo largo del curso iremos utilizando la herramienta y viendo las posibilidades que ofrece conforme las vayamos necesitando.
PostgreSQL¶
PostgreSQL es un SGBD relacional que sigue un modelo cliente-servidor, soportando accesos concurrentes de múltiples usuarios.
Por ello, necesitamos lanzar un contenedor con el servidor al cual nos conectaremos desde el cliente por línea de comandos psql
o desde el cliente gráfico PgAdmin. Por ello, en el fichero de configuración docker-compose-postgres.yml
de Docker Compose tenemos dos servicios:
services:
db:
image: postgres
container_name: pg
restart: always
ports:
- "5432:5432"
environment:
- POSTGRES_USER=s8a
- POSTGRES_PASSWORD=s8a
- POSTGRES_DB=pruebas
volumes:
- pg-data:/var/lib/postgresql/data
pgadmin:
image: dpage/pgadmin4
container_name: pgadmin
restart: always
ports:
- "5050:80"
environment:
PGADMIN_DEFAULT_EMAIL: admin@s8a.com
PGADMIN_DEFAULT_PASSWORD: admin
volumes:
- pgadmin-data:/var/lib/pgadmin
volumes:
pg-data:
pgadmin-data:
Tras crear este archivo en nuestro sistema, podemos crear los contenedores mediante:
docker compose -p pg-s8a -f docker-compose-postgres.yml up -d
Cliente psql
¶
Primero nos conectamos al contenedor (el cual en el archivo docker-compose hemos llamado pg
):
docker exec -it pg bash
A continuación, con el cliente del SGBD, nos conectamos al servidor (al ser localhost
no hace falta que lo indiquemos) pasándole el usuario (-U nomusuario
) y luego rellenando la contraseña (s8a
):
psql -U s8a pruebas
Obteniendo información de la versión instalada y en la última línea muestra que ha conectado con la bd pruebas
:
root@6475b31d89f4:/# psql -U s8a pruebas
psql (16.4 (Debian 16.4-1.pgdg120+1))
Type "help" for help.
pruebas=#
PgAdmin¶
Una vez arrancados los contenedores, accederemos a http://localhost:5050/ y tras introducir los datos del usuario administrador (admin@s8a.com
/ admin
), veremos el interfaz de inicio de la herramienta de administración PgAdmin.
El siguiente paso es crear la conexión con el servidor. Para ello, creamos un nuevo servidor mediante la opción Agregar un nuevo servidor y en los datos de configuración, indicamos los mismos datos que hemos utilizado al definir el contenedor (en el nombre del servidor podemos poner el nombre del contenedor o su identificador pg
, así como el usuario s8a
y la contraseña s8a
):
Error - role does not exists
Si al crear la conexión al servidor recibís algún tipo de error similar a "rol inexistente", es probable que los volúmenes y las versiones de los contenedores no concuerden. Si es así, elimina los contenedores y los volúmenes, y vuelve a ejecutar el script de Docker Compose.
Una vez dentro, tendremos un cuadro de mandos para monitorizar el SGBD, así como poder navegar por las estructuras de la base de datos:
AWS RDS
Además de utilizar ambos SGBD en local, podemos hacer uso de servicios en el cloud como AWS RDS.
DBeaver¶
Además de utilizar los clientes propios de cada SGBD, así como herramientas web específicas, es muy común utilizar un cliente gráfico multisolución como DBeaver.
El primer paso es crear la conexión al SGBD, mediante la opción del menú y tras seleccionar el SGBD, indicaremos los datos de la conexión. En este caso, como ya no lo hacemos desde dentro del contenedor, el host siempre será localhost
, y los usuarios, los indicados anteriormente.