MySQL
1. MySQL
1.1 Crear el archivo docker-compose.yml
cat > ~/ia-lab/services/motores-bd/mysql/docker-compose.yml << 'EOF'
services:
mysql:
image: mysql:8.0
container_name: mysql-server
restart: unless-stopped
env_file:
- .env
ports:
- "3306:3306"
volumes:
- ../../../data/mysql:/var/lib/mysql
- /mnt/d/academia/bd:/backups
command: >
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--bind-address=0.0.0.0
networks:
- ia-lab-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
networks:
ia-lab-network:
external: true
EOF
Habilitar UFW y permitir el puerto 3306 (MySQL) en el host:
1.2 Crear el archivo .env
cat > ~/ia-lab/services/motores-bd/mysql/.env << 'EOF'
TZ=America/Bogota
MYSQL_ROOT_PASSWORD=MiNiCo57**
MYSQL_DATABASE=tecnogua
EOF
Editar la clave del .env en clase:
Cambiar:
1.3 Crear README.md
cat > ~/ia-lab/services/motores-bd/mysql/README.md << 'EOF'
# MySQL 8.0 - Motor de Base de Datos
> **Acceso remoto habilitado.** Puerto expuesto en `0.0.0.0:3306`.
> **Usuario por defecto:** `root`
> **Base de datos inicial:** `tecnogua`
> **Password:** `MiNiCo57**`
---
## Conectar desde WSL (local)
```bash
sudo docker exec -it mysql-server mysql -u root -p
# Password: MiNiCo57**
1.4 Levantar MySQL
Verificar que está corriendo:
1.5 Conectar localmente a MySQL
Ya dentro del motor:
Crear una base de datos
En clase (distinta a tecnogua, que ya crea el contenedor):
Listar todas las bases de datos
Eliminar una base de datos
Entrar a una base de datos
En clase:
Listar las tablas
Listar los campos de una tabla
O también:
Salir del motor
1.6 Crear un usuario PROPIO con ACCESO REMOTO
Conectate primero como root, luego ejecuta.
Parte explicativa. Reemplaza usuario, password y nombre_bd por tus valores:
-- Crear la base de datos
CREATE DATABASE nombre_bd CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Crear usuario propio con acceso desde CUALQUIER equipo (%)
CREATE USER 'usuario'@'%' IDENTIFIED BY 'password';
-- Dar permisos sobre la base de datos
GRANT ALL PRIVILEGES ON nombre_bd.* TO 'usuario'@'%';
FLUSH PRIVILEGES;
Aplicado en clase. Copiar y pegar (Usuario: admin / Contraseña: 123456):
CREATE USER 'admin'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
FLUSH PRIVILEGES;
1.7 Conectar remotamente desde cualquier equipo
** Hacerlo desde DBEAVER **

Reemplaza los valores correspondientes en Host
En el terminal de wsl-ubuntu
Luego, buscar la IP a la linea de Eth0
y esa direccion colocarla en Host
- Host:
IP_SERVIDOR - Port:
3306 - User:
root - Password:
MiNiCo57** - Database:
tecnogua
1.8 Backup de una base de datos
sudo docker exec mysql-server mysqldump -u root -pMiNiCo57** tecnogua > /mnt/d/academia/bd/backup_tecnogua_$(date +%Y%m%d).sql
1.9 Variables clave del .env
| Variable | Descripcion |
|---|---|
TZ |
Zona horaria |
MYSQL_ROOT_PASSWORD |
Password del usuario root (MiNiCo57**) |
MYSQL_DATABASE |
Base de datos inicial (tecnogua) |