Как программно создавать базы данных MySQL на общих планах хостинга Linux - PullRequest
0 голосов
/ 10 июля 2010

Существует ли какой-нибудь надежный способ программно создавать базы данных MySQL и пользователей MySQL на общих планах хостинга Linux со страницы PHP? Например, доступ к cpanel или phpmyadmin через API или ловушку, если я знаю информацию о доступе cpanel и / или информацию о FTP?

Иногда я вижу это на некоторых сайтах и ​​в продуктах, но не знаю, как они это делают.

Ответы [ 2 ]

1 голос
/ 11 июля 2010

Спасибо @Alex C, который поставил меня на правильный путь. Следующее будет работать со многими планами общего хостинга, но вы сначала захотите проверить их политику. Мой написал мне обратно в тикете технической поддержки и сказал: «Вы должны автоматизировать с помощью сценария cpanel». Итак, вот что это такое.

В приведенном ниже примере я бы уже купил root.com в качестве основного корневого домена моего плана общего хостинга. Я хотел бы настроить базу данных с именем «user_myexample» с паролем «myexample», назначенным с полными привилегиями пользователю «user_myexamp». Если префикс «user_» и «myexamp» выглядят странно - это потому, что cpanel имеет префикс, основанный на учетной записи пользователя root в cpanel, и имя пользователя базы данных может содержать не более 7 символов.

Чтобы подключиться к Cpanel, чтобы это произошло, я ввел URL-адрес домашней страницы cpanel (зависит от плана хостинга), чтобы ее можно было проанализировать и использовать повторно. Кроме того, я предоставил информацию о пользователе / ​​пароле моего root.com.

Операторы echo - это просто выходной ответ независимо от того, сработал каждый запрос HTTP GET или нет. Возможно, вы захотите проверить это, чтобы увидеть, есть ли что-то, что вы можете проанализировать из этого вывода для успеха / неудачи.

Обратите внимание, что некоторые планы хостинга блокируют file_get_contents при подключении к URL, поэтому вам, возможно, придется переключиться с помощью fopen ($ sURL, 'r') или 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";
0 голосов
/ 10 июля 2010

Предоставление общих разрешений пользователям на выполнение каких-либо действий вне cPanel, по-видимому, вообще не дает смысла использовать cPanel, поэтому я хотел бы предположить, что они, вероятно, этого не делают.Ваша информация о доступе cPanel и информация о FTP имеют мало общего с MySQL - cPanel использует root-авторизованного пользователя MySQL для добавления баз данных и пользователей, и если только cPanel не предоставляет API для этого (я не думаю,не думаю, что кто-нибудь в здравом уме включит его на своем общем хостинге, если он это сделает).

...