WHM / cPanelサーバー上で、PHPから新しいデータベースとユーザーを作成できるかどうか疑問に思いました。
4 に答える
わかりました、これが問題です。
「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
C パネルの場合:
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');
データベースへの接続に使用するユーザーが MySQL で定義された適切な権限を持っている限り、これは問題になりません。
データベースを作成するには、ユーザーにCREATE 権限(DROP 権限となるデータベースを削除するため) が必要です。ユーザーを作成するには、CREATE USER 権限が必要です。他のユーザーに権限を付与するには、 GRANT OPTION 権限が必要になる場合もあります。
したがって、WHM/cPanel を介して作成できる DB ユーザーがこれらの権限を持っている限り、問題ありません。
DB を作成するには:
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