Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer par programme des bases de données MySQL sur des plans d'hébergement Linux partagés

Merci à @Alex C qui m'a mis sur la bonne voie. Ce qui suit fonctionnera avec de nombreux plans d'hébergement partagé, mais vous voudrez d'abord vérifier leurs politiques à ce sujet. Le mien m'a répondu dans un ticket d'assistance technique et m'a dit :"Vous devez automatiser via un script cpanel". Donc, c'est ce que c'est.

Dans l'exemple ci-dessous, j'aurais déjà acheté root.com comme domaine racine principal de mon plan d'hébergement mutualisé. Je voudrais configurer une base de données nommée "user_myexample" avec le mot de passe "myexample" attribué avec tous les privilèges à l'utilisateur "user_myexamp". Si le préfixe "user_" et "myexamp" semblent étranges, c'est parce que cpanel a un préfixe basé sur le compte d'utilisateur de l'utilisateur racine dans cpanel, et le nom d'utilisateur de la base de données ne peut contenir que 7 caractères maximum.

Pour me connecter à Cpanel pour que cela se produise, j'ai entré une URL de page d'accueil cpanel (qui varie selon le plan d'hébergement) afin qu'elle puisse être analysée et réutilisée. De plus, j'ai fourni les informations d'utilisateur/de passe cpanel de mon root.com.

Les instructions d'écho ne sont que la réponse de sortie, que chaque requête HTTP GET ait fonctionné ou non. Vous voudrez peut-être l'inspecter pour voir s'il y a quelque chose que vous pouvez analyser à partir de cette sortie pour le succès/l'échec.

Notez que certains plans d'hébergement bloquent la connexion de file_get_contents à une URL, vous devrez donc peut-être basculer avec fopen($sURL, 'r') ou l'API Curl.

<?php

// @ input vars
$sPastedCpanelHomepageURL = 'https://root.com:2083/frontend/x3/index.html';
$sNewDB = 'myexample';
$sNewDBUser = 'myexamp'; // must be 7 chars max
$sNewDBPass = 'myexample';
$sCPanelUser = 'user';
$sCPanelPass = 'pass';

// @ processing
$sCP = dirname($sPastedCpanelHomepageURL);
$sCP = str_replace('://','://' . $sCPanelUser . ':' . $sCPanelPass . '@',$sCP);

$sPrefix = substr($sCPanelUser, 0, 7) . '_';

$sTask1 = '/sql/addb.html?';
$sTask2 = '/sql/adduser.html?';
$sTask3 = '/sql/addusertodb.html?';

$sNewDB = urlencode($sNewDB);
$sNewDBUser = urlencode($sNewDBUser);
$sNewDBPass = urlencode($sNewDBPass);
$sCPanelUser = urlencode($sCPanelUser);
$sCPanelPass = urlencode($sCPanelPass);

$sNewDBUser = substr($sNewDBUser, 0, 7);

$asData1 = array(
  'db' => $sNewDB
);
$sData1 = http_build_query($asData1);
$s = file_get_contents($sCP . $sTask1 . $sData1);
echo "$s\n";

$asData2 = array(
  'user' => $sPrefix . $sNewDBUser,
  'pass' => $sNewDBPass,
  'pass2' => $sNewDBPass
);
$sData2 = http_build_query($asData2);
$s = file_get_contents($sCP . $sTask2 . $sData2);
echo "$s\n";

$asData3 = array(
  'user' => $sPrefix . $sNewDBUser,
  'db' => $sPrefix . $sNewDB,
  'update' => '',
  'ALL' => 'ALL'
);
$sData3 = http_build_query($asData3);
$s = file_get_contents($sCP . $sTask3 . $sData3);
echo "$s\n";