Создание базы данных программно из PHP на сервере WHM / cPanel - PullRequest
2 голосов
/ 09 июня 2010

Мне было интересно, возможно ли создать новую базу данных и пользователя из PHP на сервере WHM / cPanel.

Ответы [ 4 ]

3 голосов
/ 13 июня 2010

Хорошо, это вещь.

Функция «mysql_create_db» не работает должным образом на серверах cPanel.

Существует решение для этого, хотя, используя проприетарную функцию cPanel, как это

http://USER:PASS@HOST:2082/frontend/SKIN/sql/adddb.html?db=DB

Здесь также есть готовый скрипт, который можно использовать здесь http://www.zubrag.com/scripts/cpanel-database-creator.php

2 голосов
/ 17 июня 2013

Для CPanel:

function create_db($cPanelUser,$cPanelPass,$dbName) {

$buildRequest = "/frontend/x3/sql/addb.html?db=".$dbName;

$openSocket = fsockopen('localhost',2082);
if(!$openSocket) {
    return "Socket error";
    exit();
}

$authString = $cPanelUser . ":" . $cPanelPass;
$authPass = base64_encode($authString);
$buildHeaders  = "GET " . $buildRequest ."\r\n";
$buildHeaders .= "HTTP/1.0\r\n";
$buildHeaders .= "Host:localhost\r\n";
$buildHeaders .= "Authorization: Basic " . $authPass . "\r\n";
$buildHeaders .= "\r\n";

fputs($openSocket, $buildHeaders);
while(!feof($openSocket)) {
    fgets($openSocket,128);
}
fclose($openSocket);


//echo "Created database $dbName";

}

create_db('username','password','dbName');
0 голосов
/ 09 июня 2010

Пока пользователь, которого вы используете для подключения к базе данных, имеет соответствующие привилегии, определенные в MySQL, это не должно быть проблемой.

Для создания баз данных пользователю необходима привилегия CREATE (для удаления их, которая будет привилегией DROP), чтобы создать пользователей, вам нужна привилегия CREATE USER .Вам также может понадобиться привилегия GRANT OPTION , чтобы иметь возможность предоставлять привилегии другим пользователям.

Так что, пока пользователи БД, которые вы можете создать через WHM / cPanel, имеют эти привилегии, вы должны быть в порядке.

0 голосов
/ 09 июня 2010

Для создания БД:

mysql_query('create database foo');

или

mysql_create_db('foo');

http://www.php.net/manual/en/function.mysql-create-db.php

Чтобы создать пользователя MySQL:

Вы можете создать учетную запись пользователя, сгенерировав SQL и пропустив его через mysql_query (как в первом примере): http://dev.mysql.com/doc/refman/5.1/en/adding-users.html

...