Requerimiento - Cliente/Servidor (recrear el ambiente, ya con una máquina virtual o con dos computadoras en Red)

Para cumplir con el requisito solicitado por el profesor Henry Picado, se va a utilizar una máquina virtual con el sistema operativo Ubuntu donde se realizara la instalación de la base de datos MySQL y como cliente se utilizara una computadora con el sistema operativo Windows donde se ejecutara la aplicación web.

Información de acceso de la VM

  • Usuario: eco-celestial
  • Contraseña: eco_celestial1234
  • IP: 192.168.50.240/24
  • SSH: ssh eco-celestial@192.168.50.240

Luego de crear la máquina virtual se le va a estar configurando una IP estática a nuestra máquina esto para que se mas fácil de identificar y de esa forma nos aseguramos que nuestra IP no vaya a cambiar debido a DHCP. Esto también nos facilita las configuraciones y de esta forma mejoramos la configuración. revisar mas a fondo para parafrasear mejor la idea

  1. Instalar MySQL Server

    Actualizamos el sistema y procedemos a instalar MySQL Server

    apt update
    apt install mysql-server -y
    

    Verificamos que el servicio de MySQL esté corriendo

    systemctl status mysql
    
  2. Asegurar MySQL (password root y ajustes básicos)

    Ejecuta el comando:

    mysql_secure_installation
    

    Te va a ir preguntando varias cosas. Aquí te pongo exactamente qué responder.

    • Would you like to setup VALIDATE PASSWORD component? Responde: n

    • Remove anonymous users? (Press y|Y for Yes, any other key for No). Responde: y

    • Disallow root login remotely? Responde: y

    • Remove test database and access to it? Responde: y

    • Reload privilege tables now? Responde: y

  3. Permitir conexiones desde tu Windows (clave)

    Por defecto MySQL solo acepta localhost. Por lo cual se debe editar el archivo:

    nano /etc/mysql/mysql.conf.d/mysqld.cnf
    

    Buscamos la línea:

    bind-address = 127.0.0.1
    

    Y se cambia por la línea:

    bind-address = 0.0.0.0
    

    Reiniciamos MySQL

    systemctl restart mysql
    
  4. Crear la base de datos y un usuario remoto

    Entramos a MySQL

    mysql
    
    mysql -u root -p
    

    Creamos la base de datos

    CREATE DATABASE eco_celestial;
    

    Crea un usuario que se conecte desde tu PC (Windows): (pon tu IP real del host o usa % para permitir desde cualquier IP de la red)

    CREATE USER 'eco_celestial'@'%' IDENTIFIED BY 'eco_celestial1234';
    GRANT ALL PRIVILEGES ON eco_celestial.* TO 'eco_celestial'@'%';
    FLUSH PRIVILEGES;
    EXIT;
    

CREATE USER 'eco_celestial'@'localhost' IDENTIFIED BY 'tu_clave';
GRANT ALL PRIVILEGES ON eco_celestial.* TO 'eco_celestial'@'localhost';
GRANT DROP ON . TO 'eco_celestial'@'localhost';
FLUSH PRIVILEGES;

  1. Abrir el puerto del firewall en Ubuntu

    Si tienes UFW activo:

    ufw allow 3306/tcp
    ufw enable
    ufw status
    
  2. Probar conexión desde Windows

    Crear un archivo en nuestro proyecto Laragon. Ruta de ejemplo: C:\laragon\www\eco_celestial_mvc\test_conexion.php

    Al archivo test_conexion.php se le debe agregar la información:

    <?php
    	$host = "192.168.50.240";  // IP de tu VM
    	$db   = "eco_celestial";
    	$user = "eco_celestial";
    	$pass = "eco_celestial1234"; // el que le pusiste al usuario en MySQL Ubuntu
    	
    	try {
    	    $pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass);
    	    echo "✅ Conexión exitosa al MySQL remoto 🎉";
    	} catch (PDOException $e) {
    	    echo "❌ Error de conexión: " . $e->getMessage();
    	}
    ?>
    

    En el navegador abrir la dirección de nuestro proyecto, por ejemplo, http://localhost:90/eco_celestial_mvc/test_conexion.php.

    Otra alternativa seria usar la terminal de Larago y ejecutar los comandos:

    mysql --version
    mysql -h 192.168.50.240 -u eco_celestial -p
    

    Si entra y pide la contraseña creada anteriormente en MySQL en el paso 4 significa que esta funcionando.

  3. Conectar tu sistema aplicación PHP (Windows) a MySQL en Ubuntu

    En nuestro proyecto MVC, abrimos el archivo de configuración de la base de datos config/database.php y cambiamos:

    $host = 'localhost';
    $db   = 'eco_celestial';
    $user = 'root';
    $pass = '';
    

    Por la información de la IP configurada en nuestra máquina virtual y la información creada en MySQL, por ejemplo:

    $host = '192.168.50.240';    // IP de la VM Ubuntu
    $db   = 'eco_celestial';
    $user = 'eco_celestial';
    $pass = 'eco_celestial1234';
    

    Si la conexión es exitosa nuestra app en Windows estará conectada a MySQL en Ubuntu (Cliente/Servidor real).


Respuesta de ChatGPT

Opción recomendada (la más práctica): BD en una Máquina Virtual

📌 Cliente: tu Windows (navegador + aplicación PHP)
📌 Servidor: una VM con Ubuntu/Debian corriendo MySQL

Por qué te la recomiendo:

  • Es lo más fácil de explicar en la exposición.
  • Se nota clarísimo el modelo cliente/servidor (porque están en equipos distintos).
  • No dependes de internet ni de tarjeta de crédito.
  • Te sirve perfecto para demostrar la red (IP, ping, conexión, puertos).

Cómo quedaría:

  • Windows (host): XAMPP + tu app PHP
  • VM Linux: MySQL Server
  • En config/database.php conectas con la IP de la VM, por ejemplo: $host = '192.168.1.50';

✅ Evidencia que puedes mostrar al profe:

  • Captura de ip a en Linux mostrando IP
  • Captura de ping desde Windows a la VM
  • Captura de MySQL corriendo y la BD con tablas
  • Captura de tu sistema funcionando conectado a esa IP

Mi consejo final (lo que yo haría en tu caso)

✅ Usa Máquina Virtual con MySQL Server
Es la opción más segura para cumplir el requisito y es fácil de demostrar.

📌 Además te permite decir:

“La aplicación está en el cliente (Windows), y la base de datos está en el servidor (Linux), conectados por red LAN.”

Eso cumple perfecto con Cliente/Servidor.

Built with LogoFlowershow