Saltar a contenido

Proyecto 3 - Ayuda técnica

Script de creación de la base de datos

Guarda el siguiente código en un archivo como appdb_setup.sql y ejecútalo en la DB-VM (MariaDB/MySQL) con sudo mysql -u root -p < appdb_setup.sql.

-- appdb_setup.sql
-- Crea la base de datos y la tabla de ejemplo
CREATE DATABASE IF NOT EXISTS appdb
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE appdb;

CREATE TABLE IF NOT EXISTS saludos (
  id INT PRIMARY KEY,
  texto VARCHAR(100) NOT NULL
);

INSERT INTO saludos (id, texto) VALUES
  (1, 'Hola SMR'),
  (2, 'Proyecto Intermodular'),
  (3, 'Conectando Web + BD');

-- Crea el usuario solo para la IP de la WEB-VM (ajusta si tu web tiene otra IP)
-- Sustituye 192.168.20.10 por la IP real de la WEB-VM
CREATE USER IF NOT EXISTS 'appuser'@'192.168.20.10' IDENTIFIED BY 'ClaveFuerte!';
GRANT SELECT ON appdb.* TO 'appuser'@'192.168.20.10';
FLUSH PRIVILEGES;

-- (Opcional, SOLO si usas MySQL 8 y tienes problemas de autenticación)
-- CREATE USER 'appuser'@'192.168.20.10' IDENTIFIED WITH mysql_native_password BY 'ClaveFuerte!';
-- GRANT SELECT ON appdb.* TO 'appuser'@'192.168.20.10';
-- FLUSH PRIVILEGES;

Página de inicio de la aplicación web

Guarda el siguiente código en un archivo index.php en la WEB-VM (en la raíz del servidor web Apache /Nginx) y edita las variables de conexión a la base de datos.

<!doctype html>
<html lang="es">
<head>
  <meta charset="utf-8">
  <title>Demo BD — Saludos</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style>body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;max-width:720px;margin:2rem auto;padding:0 1rem}code{background:#f4f4f4;padding:.1rem .3rem;border-radius:4px}</style>
</head>
<body>
  <h1>Saludos desde la base de datos</h1>
  <?php
    // AJUSTA ESTOS DATOS A TU ENTORNO
    $DB_HOST = '192.168.20.20'; // IP de la DB-VM
    $DB_USER = 'appuser';
    $DB_PASS = 'ClaveFuerte!';
    $DB_NAME = 'appdb';

    // Conexión
    $mysqli = @new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
    if ($mysqli->connect_errno) {
      http_response_code(500);
      echo "<p><strong>Error de conexión ({$mysqli->connect_errno}):</strong> {$mysqli->connect_error}</p>";
      exit;
    }
    $mysqli->set_charset('utf8mb4');

    // Consulta
    $sql = "SELECT id, texto FROM saludos ORDER BY id ASC";
    $res = $mysqli->query($sql);

    if (!$res) {
      echo "<p><strong>Error en la consulta:</strong> " . htmlspecialchars($mysqli->error) . "</p>";
    } else {
      echo "<ul>";
      while ($row = $res->fetch_assoc()) {
        $id = (int)$row['id'];
        $texto = htmlspecialchars($row['texto'], ENT_QUOTES, 'UTF-8');
        echo "<li><code>$id</code> — $texto</li>";
      }
      echo "</ul>";
      $res->free();
    }

    $mysqli->close();
  ?>
  <p style="margin-top:2rem;color:#666">Pista: edita este HTML como quieras; el bloque PHP imprime la lista.</p>
</body>
</html>