2009-12-08 7 views
2

내가 백업 MySQL 데이터베이스 PHP 스크립트를 작성하려고 해요 :PHP 스크립트 백업 MySQL 데이터베이스에

[stingray]$ php /[ABSOLUTE PATH]/db_backup.php

Enter password: [I INPUT PASSWORD]

mysqldump: Got error: 1044: Access denied for user '[USERNAME]'@'208.113.128.0/255.255.128.0' to database '[PASSWORD]' when selecting the database

: 나는 쉘 터미널에서 실행하면

if ($db_resource = mysql_connect($db_server, $db_username, $db_password, $db_newlink)) 
    { 
     if (mysql_select_db($db_name, $db_resource)) 
     { 
     $backupFile = $db_name."_".date("Y-m-d-H-i-s").".gz"; 
     $command = "mysqldump --opt -h ".$db_server." -u ".$db_username." -p ".$db_password." ".$db_name." | gzip > ".$db_save_dir."/".$backupFile; 
     system($command); 
     } 
    } 

    mysql_close($db_resource); 

을,이 얻을

좋아, 이제 내가 이해할 수없는 것은 데이터베이스를 내 암호로 호출하는 이유이다. 웹 브라우저에서 파일을 가리키면 정상적으로 실행됩니다. 아무도 내가해야 할 일을 알고 있습니까? 개인적으로, PHP, Python, CGI 등은 Apache 서버에서 실행할 수있는 한 실제로는 상관하지 않습니다.

감사합니다.

답변

3

암호 플래그의 구문이 다릅니다. -p 플래그 다음에 공백을 제거하고 다른 것을줍니다.

+0

감사합니다. –

+1

나는 벽에 너무 많은 시간 내 머리를 맞았 어 :) –

1

전체 옵션 이름을 사용해보십시오. 나는 비슷한 문제가 있었지만 실패의 진정한 근원을 해결할 시간은 없었다. 그러나이 일을하고 나를 위해 작동합니다 : 당신은 그냥 물건을 백업하는 경우 난 강력하게 this very easy, very configurable, open source cron backup script를 사용하는 것이 좋습니다

/usr/bin/mysqldump \ 
--user=username \ 
--password=password \ 
dbname > mysqldump.sql 
0

. 그것은 멋지 네요. 그게 전부라면 당신이 좋아할 것 같아요.

정말 아파치를 통해 실행해야하는 경우 스크립트를 원격으로 실행하기 위해 백틱을 사용하면 백업 회전 및 주간/월간 백업, 압축 및 로깅을 무료로받을 수 있습니다.

0

SqlBuddy을 사용하는 것이 좋습니다. 내 문제를 해결했습니다.

cron 또는 자동화 된 스크립트를 사용하려는 경우에만 사용자 지정 스크립트를 계속 진행하십시오.

1

1 : -p와 암호 사이에 공백이 없어야합니다. 예 : -p ". $ db_password."

2 : 해당 데이터베이스의 특정 사용자에 대해 모든 권한 (원하는 경우)을 부여합니다.

3 : 파일에 명령을 실행할 수있는 올바른 권한을 부여하십시오.