Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erstellen Sie programmgesteuert MySQL-Datenbanken auf gemeinsam genutzten Linux-Hostingplänen

Danke an @Alex C, der mich auf den richtigen Weg gebracht hat. Das Folgende funktioniert mit vielen Shared-Hosting-Plänen, aber Sie sollten zuerst deren Richtlinien überprüfen. Meins hat mir in einem technischen Support-Ticket zurückgeschrieben und gesagt:"Sie müssen durch ein cpanel-Skript automatisieren." Das ist es also.

Im folgenden Beispiel hätte ich root.com bereits als Haupt-Root-Domain meines Shared-Hosting-Plans erworben. Ich möchte eine Datenbank namens "user_myexample" mit dem Passwort "myexample" einrichten, das dem Benutzer "user_myexamp" mit vollen Rechten zugewiesen ist. Wenn das Präfix „user_“ und „myexamp“ seltsam aussehen, liegt das daran, dass cpanel ein Präfix hat, das auf dem Benutzerkonto des Root-Benutzers in cpanel basiert, und der Datenbank-Benutzername darf nur maximal 7 Zeichen lang sein.

Um eine Verbindung zu Cpanel herzustellen, um dies zu ermöglichen, habe ich eine Cpanel-Homepage-URL (die je nach Hosting-Plan variiert) eingegeben, damit sie analysiert und wiederverwendet werden kann. Außerdem habe ich die cpanel-Benutzer-/Passinformationen meines root.com bereitgestellt.

Die Echo-Anweisungen sind nur die Ausgabeantwort, unabhängig davon, ob jede HTTP-GET-Anforderung funktioniert hat oder nicht. Vielleicht möchten Sie das überprüfen, um zu sehen, ob es etwas gibt, das Sie aus dieser Ausgabe auf Erfolg/Fehler analysieren können.

Beachten Sie, dass einige Hosting-Pläne die Verbindung von file_get_contents mit einer URL blockieren, sodass Sie möglicherweise mit fopen($sURL, 'r') oder der Curl-API wechseln müssen.

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