Obrigado a @Alex C que me colocou no caminho certo. O seguinte funcionará com muitos planos de hospedagem compartilhada, mas você deve verificar primeiro as políticas deles. O meu me escreveu de volta em um ticket de suporte técnico e disse:"Você precisa automatizar por meio de um script cpanel". Então, é isso.
No exemplo abaixo, eu já teria comprado root.com como meu domínio raiz principal do meu plano de hospedagem compartilhada. Eu estaria querendo configurar um banco de dados chamado "user_myexample" com a senha "myexample" atribuída com privilégios totais ao usuário "user_myexamp". Se o prefixo "user_" e "myexamp" parecerem estranhos - é porque o cpanel tem um prefixo baseado na conta de usuário do usuário root no cpanel, e o nome de usuário do banco de dados pode ter no máximo 7 caracteres.
Para conectar-se ao Cpanel para que isso aconteça, insira um URL da página inicial do cpanel (que varia de acordo com o plano de hospedagem) para que possa ser analisado e reutilizado. Além disso, forneci as informações de usuário/pass do cpanel do meu root.com.
As instruções echo são apenas a resposta de saída, independentemente de cada solicitação HTTP GET ter funcionado ou não. Você pode querer inspecionar isso para ver se há algo que você pode analisar nessa saída para sucesso/fracasso.
Observe que alguns planos de hospedagem bloqueiam file_get_contents conectando-se a uma URL, então você pode ter que alternar com fopen($sURL, 'r') ou API Curl.
<?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";