Создать базу данных программно с PHP на сервере WHM / cPanel

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

    Хорошо, это дело.

    Функция «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

    Чтобы создать БД:

     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

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

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

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

    Для 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');