Vous pouvez fa­ci­le­ment connecter votre base de données MySQL ou MariaDB à un serveur Cloud Linux pour exécuter vos ap­pli­ca­tions de manière plus flexible. Avec les bons iden­ti­fiants et une con­fi­gu­ra­tion adaptée, la connexion MySQL sous Linux s’effectue sim­ple­ment et ra­pi­de­ment.

Bases de données managées
Des bases de données gérées et sûres
  • Solutions flexibles, adaptées à vos besoins
  • Ar­chi­tec­ture de niveau pro­fes­sion­nel, gérée par des experts
  • Hébergées en Europe, con­for­mé­ment aux normes de pro­tec­tion des données les plus strictes

Linux MySQL Connect : quelles sont les exigences requises au préalable ?

  • Un serveur Cloud fonc­tion­nant sous Linux (toute dis­tri­bu­tion com­pa­tible).
  • Une pile LAMP installée et opé­ra­tion­nelle (Apache, MySQL/MariaDB et PHP).
  • Si un pare-feu est activé, assurez-vous que l’accès au port 3306 est ouvert pour le serveur MySQL/MariaDB.

Linux MySQL Connect : guide étape par étape

Les bases de données sont souvent reliées à des serveurs Cloud Linux pour afin d’offrir une gestion flexible et évolutive. Cela permet à plusieurs services ou ap­pli­ca­tions Web d’accéder aux mêmes données sans né­ces­si­ter d’ins­tal­la­tions locales dis­tinctes.

Un serveur Cloud facilite également la main­te­nance, les sau­ve­gardes et les mises à jour de sécurité de la base de données.

Dans ce tutoriel, nous vous ex­pli­quons comment con­fi­gu­rer une base de données MySQL ou MariaDB sur un serveur Linux et la connecter à un script PHP.

Étape 1 : créer une base de données d’exemple

Pour ce tutoriel, nous allons utiliser une base de données de test. Pour la créer, commencez par vous connecter :

mysql -u root -p

Créez la base de données de test avec la commande suivante :

CREATE DATABASE phptest;

Passez main­te­nant à la base de données de test :

USE phptest;

Créez main­te­nant une table d’exemple simple. Dans cet exemple, nous allons créer une table destinée à en­re­gis­trer les employés :

CREATE TABLE employes (ID INT, Nom VARCHAR(40));

Ajoutez main­te­nant deux employés à la table :

INSERT INTO employes VALUES (1, 'Alice');
INSERT INTO employes VALUES (2, 'Bob');

Pour vérifier si les en­re­gis­tre­ments ont été créés cor­rec­te­ment, vous pouvez utiliser la requête SQL suivante :

SELECT * FROM employes;

La sortie devrait res­sem­bler à ceci :

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

Étape 2 : créer un uti­li­sa­teur MySQL/MariaDB

Pour autoriser un accès sécurisé à la base de données MySQL/MariaDB et empêcher tout accès non autorisé, créez un nouvel uti­li­sa­teur dédié.

Re­con­nec­tez-vous ensuite au serveur de base de données à l’aide du client MySQL ou MariaDB :

mysql -u root -p

La commande suivante crée un uti­li­sa­teur et lui accorde des per­mis­sions pour la base de données que nous avons créée à la première étape :

CREATE USER [NomUtilisateur]@[Emplacement] IDENTIFIED BY [MotDePasse];
GRANT ALL PRIVILEGES ON [NomBaseDeDonnees].* TO [NomUtilisateur]@[Emplacement];
FLUSH PRIVILEGES;

Remplacez les éléments suivants dans la commande ci-dessus :

  • [NomBaseDeDonnees] : le nom de votre base de données.
  • [NomUtilisateur] : le nom de l’uti­li­sa­teur que vous souhaitez créer.
  • [Emplacement] : l’em­pla­ce­ment du script PHP. Si le script PHP et la base de données MySQL se trouvent sur le même serveur, utilisez localhost. Sinon, indiquez l’adresse IP du serveur hé­ber­geant le script PHP.
  • [MotDePasse] : un mot de passe sécurisé pour votre uti­li­sa­teur.

Par exemple, pour créer un uti­li­sa­teur nommé phpuser avec le mot de passe Ig86N3tUa9, situé sur le même serveur que la base de données MySQL et ayant accès à la base phptest, exécutez la commande suivante :

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

Pour créer un deuxième uti­li­sa­teur nommé phpuser2, qui se connecte à partir d’un serveur avec l’adresse IP 192.168.0.1, la commande est la suivante :

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

Étape 3 : créer un script PHP

Pour tester la connexion entre votre ap­pli­ca­tion PHP sur le serveur Linux et la base de données, nous allons créer un petit script de test. Ce script se connecte à la base de données de test, lit les données d’une table et les affiche dans le na­vi­ga­teur. Cela permet de vérifier que l’uti­li­sa­teur, le mot de passe et l’hôte sont cor­rec­te­ment con­fi­gu­rés et que la base de données est ac­ces­sible.

Commencez par créer le script de test :

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

Ensuite, insérez le contenu suivant dans le fichier :

<html>
<head>
<title>Test PHP Connection Script</title>
</head>
<body>
<h3>Welcome to the PHP Connect Test</h3>
<?php
$dbname = [NomBaseDeDonnees];
$dbuser = [NomUtilisateur];
$dbpass = [MotDePasse];
$dbhost = [Emplacement];
// Établir la connexion
$connect = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
if (!$connect) {
die("Échec de la connexion : " . mysqli_connect_error());
}
// Interroger les données 
$result = mysqli_query($connect, "SELECT ID, Nom FROM employes");
while ($row = mysqli_fetch_assoc($result)) {
echo "ID: {$row['ID']}  Name: {$row['Nom']}<br>";
}
mysqli_close($connect);
?>
</body>
</html>
html

Remplacez NomUtilisateur, MotDePasse, Emplacement et NomBaseDeDonnees par les données cor­res­pon­dantes. Par exemple, si vous souhaitez tester une connexion locale, c’est-à-dire lorsque le script et la base de données se trouvent sur le même serveur, utilisez la con­fi­gu­ra­tion suivante :

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

Pour tester une connexion distante, lorsque le script se trouve sur un autre serveur que la base de données, attribuez les valeurs suivantes aux variables :

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

Ré­so­lu­tion des problèmes lors d’une connexion MySQL/MariaDB à distance

Si votre ap­pli­ca­tion PHP ou un autre script ne parvient pas à se connecter à la base de données MySQL/MariaDB depuis un serveur distant, plusieurs causes peuvent expliquer ce problème. Les solutions suivantes peuvent vous aider à iden­ti­fier et corriger le problème.

Solution 1 : vérifier l’uti­li­sa­teur et ses au­to­ri­sa­tions

En cas d’échec de connexion à une base de données MySQL/MariaDB hébergée sur un autre serveur, vérifiez d’abord les points suivants :

  • Le nom d’uti­li­sa­teur et le mot de passe MySQL/MariaDB sont-ils corrects ?
  • L’uti­li­sa­teur dispose-t-il du bon em­pla­ce­ment d’accès configuré ?

Par défaut, MySQL et MariaDB n’au­to­ri­sent les con­nexions qu’à partir de l’hôte défini lors de la création de l’uti­li­sa­teur. Par exemple, si l’uti­li­sa­teur a été créé de cette manière :

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

dans ce cas, la connexion ne fonc­tion­nera que sur le même serveur que celui où s’exécute la base de données (localhost). Un script hébergé sur un autre serveur nécessite donc un uti­li­sa­teur configuré avec l’adresse IP distante ou le caractère générique % (pour autoriser tous les hôtes).

Solution 2 : tester la connexion en ligne de commande

Avant de dépanner le script PHP, testez d’abord la connexion di­rec­te­ment depuis la ligne de commande MySQL. Sur le serveur où s’exécute le script, utilisez la commande suivante :

mysql -u [NomUtilisateur] -h [Emplacement] -p

Pour établir une connexion à une base de données sur 192.168.0.2 avec le nom d’uti­li­sa­teur phpuser2, la commande est la suivante :

mysql -u phpuser2 -h 192.168.0.2 -p

Si la connexion est réussie, cette commande ouvrira une session dans le client MySQL/MariaDB du serveur distant.

Solution 3 : pare-feu

Vérifiez que les règles du pare-feu au­to­ri­sent le trafic TCP/UDP sur le port 3306 du serveur de base de données. Gardez à l’esprit que tous les serveurs Cloud ap­pli­quent par défaut une politique de pare-feu gérée via le Cloud Panel.

Aller au menu principal