Par défaut, l'accès à distance au serveur de base de données MySQL est désactivé pour des raisons de sécurité. Cependant, vous pouvez fournir un accès distant au serveur de base de données à un utilisateur depuis votre control panel.
Dans cet article nous vous montrons les étapes à suivre pour accéder à MySQL distant en localhost avec PHP.
1. Connectez vous à votre control panel en suivant les étapes au lien suivant: https://www.myvala.com/knowledgebase/140/Comment-se-connecter-au-Control-Panel.html
2. Allez sur la rubrique MySQL Databases.
3. Créez un utilisateur:
- saisissez le nom de l’utilisateur
- sélectionner la base de données
- saisissez le mot de passe
- Puis cliquez sur Create MySQL user
4. Allez sur la rubrique Remote MySQL access
5. Choisissez Database User
6. Puis l’IP Adresse à laquelle vous autorisez la connexion distante, assurez vous svp que c’est la bonne adresse IP.
Vous pouvez autoriser un ou plusieurs IP addresses.
7. Puis cliquez sur Add Host, et attendez environ 30 min.
8. Créez un fichier .php sur le localhost, puis copiez le code ci-dessous et changez les informations de connexion base de données par les vôtres.
Dans notre exemple, les informations de notre base de données sont:
Hostname: mysql.stackcp.com
Username: userdb12
Mot de passe : celui que vous avez configuré lors de la création de l’utilisateur
Port: 58056
Pour l’affichage des données on va utiliser la table user et le colonne Email.
<?php
$host = 'mysql.stackcp.com';
$db = 'db-remote-31393562f8';
$user = 'userdb12';
$pass = 'Password1234';
$port = "58056";
$charset = 'utf8mb4';
$options = [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
\PDO::ATTR_EMULATE_PREPARES => false,
];
$dsn = "mysql:host=$host;dbname=$db;charset=$charset;port=$port";
try {
$pdo = new \PDO($dsn, $user, $pass, $options);
//example
$sql = 'SELECT Email FROM user';
foreach ($pdo->query($sql) as $row) {
print $row['Email'] . "\t";
}
} catch (\PDOException $e) {
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
?>
10. Le résultat s’affiche correctement.