Gracias a @Alex C que me puso en el camino correcto. Lo siguiente funcionará con muchos planes de alojamiento compartido, pero primero querrá consultar sus políticas sobre esto. Mine me respondió en un ticket de soporte técnico y dijo:"Tienes que automatizar a través de un script de cpanel". Entonces, eso es lo que es.
En el ejemplo a continuación, ya habría comprado root.com como mi dominio raíz principal de mi plan de alojamiento compartido. Me gustaría configurar una base de datos llamada "user_myexample" con la contraseña "myexample" asignada con privilegios completos al usuario "user_myexamp". Si el prefijo "user_" y "myexamp" parecen extraños, es porque cpanel tiene un prefijo basado en la cuenta de usuario del usuario raíz en cpanel, y el nombre de usuario de la base de datos solo puede tener un máximo de 7 caracteres.
Para conectarme a Cpanel y hacer que esto suceda, ingresé una URL de la página de inicio de cpanel (que varía según el plan de alojamiento) para que pudiera analizarse y reutilizarse. Además, proporcioné la información de usuario/contraseña de cpanel de mi root.com.
Las declaraciones de eco son solo la respuesta de salida, ya sea que cada solicitud HTTP GET haya funcionado o no. Es posible que desee inspeccionar eso para ver si hay algo que pueda analizar de esa salida para el éxito/fracaso.
Tenga en cuenta que algunos planes de alojamiento bloquean la conexión de file_get_contents a una URL, por lo que es posible que deba cambiar con 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";