Mysql
 sql >> Database >  >> RDS >> Mysql

Come creare in modo programmatico database MySQL su piani di hosting Linux condivisi

Grazie ad @Alex C che mi ha portato sulla strada giusta. Quanto segue funzionerà con molti piani di hosting condiviso, ma ti consigliamo di verificare prima le loro politiche su questo. Il mio mi ha risposto in un ticket di supporto tecnico e ha detto:"Devi automatizzare tramite uno script cpanel". Quindi, ecco cos'è.

Nell'esempio seguente, avrei già acquistato root.com come dominio principale principale del mio piano di hosting condiviso. Vorrei configurare un database chiamato "user_myexample" con la password "myexample" assegnata con privilegi completi all'utente "user_myexamp". Se il prefisso "user_" e "myexamp" sembrano strani, è perché cpanel ha un prefisso basato sull'account utente root in cpanel e il nome utente del database può contenere solo 7 caratteri al massimo.

Per connettermi a Cpanel in modo che ciò accada, ho inserito l'URL della home page di cpanel (che varia in base al piano di hosting) in modo che possa essere analizzato e riutilizzato. Inoltre, ho fornito le informazioni sull'utente/pass del cpanel del mio root.com.

Le istruzioni echo sono solo la risposta di output indipendentemente dal fatto che ciascuna richiesta HTTP GET abbia funzionato o meno. Potresti volerlo ispezionare per vedere se c'è qualcosa che puoi analizzare da quell'output per il successo/fallimento.

Nota che alcuni piani di hosting bloccano la connessione di file_get_contents a un URL, quindi potresti dover passare a fopen($sURL, 'r') o Curl API.

<?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";