Puedes conectar fá­ci­l­me­n­te tu base de datos MySQL o MariaDB a un servidor cloud Linux para ejecutar tus apli­ca­cio­nes de forma más flexible. Con las cre­de­n­cia­les correctas y una co­n­fi­gu­ra­ción adecuada, la conexión MySQL en Linux se realiza de manera rápida y sencilla.

Re­qui­si­tos

  • Un servidor cloud con Linux, in­de­pe­n­die­n­te­me­n­te de la di­s­tri­bu­ción que utilices.
  • La pila LAMP instalada y en fu­n­cio­na­mie­n­to (Apache, MySQL/MariaDB y PHP).
  • Si usas un co­r­ta­fue­gos, asegúrate de permitir el acceso al puerto 3306 en el servidor MySQL/MariaDB.

Cómo conectar MySQL o MariaDB a un servidor cloud Linux

Las bases de datos suelen co­ne­c­tar­se a se­r­vi­do­res cloud Linux para ejecutar apli­ca­cio­nes de forma flexible y escalable. De este modo, varios servicios o páginas web pueden acceder a los mismos datos sin necesidad de in­s­ta­la­cio­nes locales separadas. Además, un servidor cloud si­m­pli­fi­ca la gestión de la base de datos, así como la rea­li­za­ción de copias de seguridad y ac­tua­li­za­cio­nes del sistema.

En esta guía te mostramos cómo co­n­fi­gu­rar una base de datos MySQL o MariaDB en un servidor Linux y cómo co­ne­c­tar­la a través de un script PHP.

Paso 1: crear una base de datos de prueba

Para este tutorial, uti­li­za­re­mos una base de datos de prueba. Para crearla, primero inicia sesión:

mysql -u root -p

Crea la base de datos de prueba con este comando:

CREATE DATABASE phptest;

A co­n­ti­nua­ción, cambia a la base de datos de prueba:

USE phptest;

Crea una tabla de ejemplo; en este caso, una tabla para almacenar empleados:

CREATE TABLE employees (id INT, name VARCHAR(40));

Ahora añade dos empleados a la tabla:

INSERT INTO employees VALUES (1, "Alice");
INSERT INTO employees VALUES (2, "Bob");

Para comprobar que los registros se han creado co­rre­c­ta­me­n­te, utiliza la siguiente consulta SQL:

SELECT * FROM employees;

El resultado debería verse así:

+------+-------+
| id   | name  |
+------+-------+
| 1    | Alice |
| 2    | Bob   |
+------+-------+
2 rows in set (0,002 sec)

Paso 2: crear un usuario para MySQL/MariaDB

Para habilitar el acceso au­te­n­ti­ca­do y proteger la base de datos frente a co­ne­xio­nes no au­to­ri­za­das, el siguiente paso consiste en crear un usuario MySQL/MariaDB. Para ello, vuelve a iniciar sesión en el cliente MySQL/MariaDB del servidor de base de datos.

mysql -u root -p

El siguiente comando crea un nuevo usuario y le concede permisos para acceder a la base de datos creada en el paso anterior.

CREATE USER [Username]@[Location] IDENTIFIED BY [Passwort];
GRANT ALL PRIVILEGES ON [Datenbankname].* TO [Username]@[Location];
FLUSH PRIVILEGES;

Sustituye los si­guie­n­tes valores en el comando:

  • [Database name]: el nombre de tu base de datos.
  • [Username]: el nombre del usuario que deseas crear.
  • [Location]: la ubicación del script PHP. Si el script PHP y la base de datos MySQL se en­cue­n­tran en el mismo servidor, usa localhost. En caso contrario, introduce la dirección IP del servidor donde se aloja el script PHP.
  • [Password]: una co­n­tra­se­ña segura para tu usuario.

Por ejemplo, para crear un usuario llamado phpuser con la co­n­tra­se­ña Ig86N3tUa9, que se encuentra en el mismo servidor que la base de datos MySQL y tiene acceso a la base de datos phptest, ejecuta:

CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'Ig86N3tUa9';
GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser'@'localhost';
FLUSH PRIVILEGES;

Para crear un segundo usuario llamado phpuser2, que se conecte desde un servidor con la dirección IP 192.168.0.1, usa:

CREATE USER 'phpuser2'@'192.168.0.1' IDENTIFIED BY 'Rq53yur62I';
GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser2'@'192.168.0.1';
FLUSH PRIVILEGES;

Paso 3: crear un script de conexión PHP

Para comprobar la conexión de tu apli­ca­ción PHP en el servidor Linux con la base de datos, vamos a crear un pequeño script de prueba. Este script se conectará a la base de datos de ejemplo, leerá los datos de una tabla y los mostrará en el navegador. De este modo podrás verificar que el usuario, la co­n­tra­se­ña y el host están co­n­fi­gu­ra­dos co­rre­c­ta­me­n­te y que la base de datos es accesible.

Primero, crea el archivo del script de prueba:

sudo nano /var/www/html/phpconnect.php

A co­n­ti­nua­ción, pega el siguiente contenido dentro del archivo:

<html>
<head>
<title>Test PHP Connection Script</title>
</head>
<body>
<h3>Welcome to the PHP Connect Test</h3>
<?php
$dbname = [Database name];
$dbuser = [Username];
$dbpass = [Password];
$dbhost = [Location];
// Establecer conexión
$connect = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
if (!$connect) {
die("Error de conexión: " . mysqli_connect_error());
}
// Consultar datos
$result = mysqli_query($connect, "SELECT id, name FROM employees");
while ($row = mysqli_fetch_assoc($result)) {
echo "ID: {$row['id']}  Name: {$row['name']}<br>";
}
mysqli_close($connect);
?>
</body>
</html>
html

Sustituye Username, Password, Location y Host por los valores co­rre­s­po­n­die­n­tes. Por ejemplo, si el script se ejecuta en el mismo servidor que la base de datos, usa:

$dbuser = 'phpuser';
$dbpass = 'Ig86N3tUa9';
$dbhost = 'localhost';

Si el script se encuentra en otro servidor distinto al de la base de datos y quieres comprobar una conexión remota, introduce los si­guie­n­tes valores:

$dbuser = 'phpuser2';
$dbpass = 'Rq53yur62I';
$dbhost = '192.168.0.2';

Cómo so­lu­cio­nar errores de conexión remota en MySQL/MariaDB

Si tu apli­ca­ción PHP u otro script no pueden co­ne­c­tar­se desde un servidor distinto al de la base de datos MySQL/MariaDB, puede haber varias causas. A co­n­ti­nua­ción en­co­n­tra­rás algunas posibles so­lu­cio­nes.

Solución 1: comprobar el usuario y sus permisos

Si tienes problemas para conectar a una base de datos MySQL/MariaDB en otro servidor, verifica lo siguiente:

  • ¿Estás usando el nombre de usuario y la co­n­tra­se­ña correctos?
  • ¿El usuario tiene co­n­fi­gu­ra­da la ubicación correcta?

Por defecto, MySQL/MariaDB solo permite el acceso desde el host indicado al crear el usuario. Por ejemplo, si el usuario se creó con el siguiente comando:

CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'Ig86N3tUa9';
GRANT ALL PRIVILEGES ON phptest.* TO 'phpuser'@'localhost';
FLUSH PRIVILEGES;

Entonces solo podrá iniciar sesión en el mismo servidor donde se ejecuta la base de datos (localhost). Un script alojado en otro servidor ne­ce­si­ta­rá un usuario creado para la dirección IP remota o para % (todos los hosts).

Solución 2: probar la conexión desde la línea de comandos

Antes de probar el script PHP, conviene comprobar la conexión di­re­c­ta­me­n­te desde la línea de comandos de MySQL. En el servidor donde se ejecuta el script, utiliza:

mysql -u [username] -h [host server IP address] -p

Por ejemplo, para co­ne­c­tar­te a una base de datos en la IP 192.168.0.2 con el usuario phpuser2, el comando sería:

mysql -u phpuser2 -h 192.168.0.2 -p

Si la conexión es correcta, accederás al cliente MySQL/MariaDB del servidor remoto.

Solución 3: comprobar la co­n­fi­gu­ra­ción del co­r­ta­fue­gos

Asegúrate de que las reglas del co­r­ta­fue­gos permiten el tráfico TCP/UDP en el puerto 3306 hacia el servidor de base de datos.

Ten en cuenta que todos los se­r­vi­do­res cloud están sujetos a las políticas pre­de­te­r­mi­na­das del co­r­ta­fue­gos que se gestionan desde el Cloud Panel.

Ir al menú principal