2010-07-10 3 views
0

PHP 페이지에서 공유 Linux 호스팅 계획에 MySQL 데이터베이스와 MySQL 사용자를 프로그래밍 방식으로 안전하게 만들 수 있습니까? 예를 들어, 내 cpanel 액세스 정보 및/또는 내 FTP 정보를 알고 있다면 API 또는 후크를 통해 cpanel 또는 phpmyadmin에 액세스 할 수 있습니까?공유 리눅스 호스팅 계획에 MySQL 데이터베이스를 프로그래밍 방식으로 생성하는 방법

때때로 일부 사이트 및 제품에서이 내용을 볼 수 있지만 어떻게 사용하는지 알지 못합니다.

+0

어떻게 최신 상태로 유지 될까요? – Vickel

답변

1

@Alex C 덕분에 올바른 길로 나를 잡았습니다. 다음은 많은 공유 호스팅 계획에서 작동하지만 먼저이 정책에 대한 정책을 확인하십시오. 광산은 기술 지원 티켓에 나를 다시 써서 "cpanel 스크립트를 통해 자동화해야합니다."라고 말했습니다. 그래서, 그것이 바로 이것입니다.

아래 예에서 이미 공유 호스팅 계획의 기본 루트 도메인으로 root.com을 구입했을 것입니다. 나는 "user_myexamp"라는 이름의 데이터베이스에 "user_myexamp"라는 사용자에게 모든 권한을 할당 한 패스워드 "myexample"을 설정하고자 할 것이다. "user_"접두어와 "myexamp"가 이상하게 보이는 경우 cpanel은 cpanel에 루트 사용자의 사용자 계정을 기반으로하는 접두사가 있고 데이터베이스 사용자 이름은 최대 7 자일 수 있기 때문입니다.

Cpanel에 연결하여이를 수행하려면 cpanel 홈페이지 URL (호스팅 계획에 따라 다름)을 입력하여 구문 분석하고 다시 사용할 수 있도록했습니다. 또한 root.com의 cpanel 사용자/패스 정보를 제공했습니다.

echo 문은 각 HTTP GET 요청의 작동 여부에 상관없이 출력 응답입니다. 성공/실패에 대한 출력 결과를 파싱 할 수 있는지 알아보기 위해 검사 할 수 있습니다.

일부 호스팅 계획은 file_get_contents가 URL에 연결되는 것을 차단하므로 fopen ($ sURL, 'r') 또는 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"; 
+0

최신 정보가 지금까지 어떻게됩니까? – Vickel

0

cPanel 외부에서 수행 할 공유 사용자 권한을 부여하면 cPanel을 전혀 사용하지 못하는 것처럼 보입니다. 그렇기 때문에 cPanel을 사용하지 않는 것이 좋습니다. 귀하의 cPanel 액세스 정보와 귀하의 FTP 정보는 MySQL과 관련이 거의 없습니다 - cPanel은 MySQL 루트 권한이 부여 된 사용자를 사용하여 데이터베이스와 사용자를 추가합니다. 그리고 cPanel이 API를 공개하지 않는 한 (나는 그렇지 않다고 생각합니다. 그렇지 않다면 아무도 제정신이 아닌 공유 호스팅에서 사용할 수 있다고 생각하지 마십시오.)

+0

모든 것이 자동화에 관한 것입니다. 다른 사람의 cpanel에 연결하는 제품을 만들고 싶다면 (권한과 로그인 정보를 가지고 마음을 돌리십시오), 사용자를 위해 몇 가지 작업을 자동화하십시오. 이것이 사용 된 이유입니다. – Volomike

관련 문제