문제

MySQL 데이터베이스를 백업하기 위해 PHP 스크립트를 작성하려고합니다.

   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 );

쉘 터미널에서 실행하면 다음과 같습니다.

Stingray] $ php /[절대 경로] /db_backup.php

암호를 입력: [나는 비밀번호를 입력했다]

mysqldump : got 오류 : 1044 : 사용자에 대한 액세스 거부 '[사용자 이름] '@'208.113.128.0/255.255.128.0 '데이터베이스에'[비밀번호] '데이터베이스를 선택할 때

자, 이제 내가 정말로 이해하지 못하는 것은 데이터베이스를 내 비밀번호로 부르는 이유입니다. 내 웹 브라우저를 파일로 가리키면 잘 실행됩니다. 내가 무엇을 해야하는지 아는 사람이 있습니까? 개인적으로, 나는 그것이 Apache 서버에서 실행할 수있는 한 PHP, Python, CGI 등인지 상관하지 않습니다.

감사.

도움이 되었습니까?

해결책

비밀번호 플래그의 구문은 다릅니다. -P 플래그 후 공간을 제거하고 다른 샷을 제공하십시오.

다른 팁

전체 옵션 이름을 사용해보십시오. 나는 비슷한 문제가 있었지만 실패의 실제 근본을 해결할 시간이 없었습니다. 그러나 이것은 효과가 있었고 나에게 효과가 있습니다.

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

1 : -p와 비밀번호 사이의 공간이 없음 : -p ". $ db_password."

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

3 : 명령을 실행하기 위해 파일에 올바른 권한을 부여하십시오.

당신이 그냥 백업하는 경우, 나는 강력히 사용하는 것이 좋습니다. 이 매우 쉽고 매우 구성 가능하며 오픈 소스 CRON 백업 스크립트. 그것은 훌륭하고 당신이 그 모든 것이라면 마음에 드는 것 같아요.

Apache를 통해 실제로 실행 해야하는 경우 Backticks를 사용하여 스크립트를 원격으로 트리거 한 다음 백업 회전 및 주간/월간 백업, 압축 및 무료로 로깅을받을 수 있습니다.

나는 당신이 사용하는 것이 좋습니다 sqlbuddy, 그것은 당신과 같은 내 문제를 해결했습니다.

CRON 또는 자동 스크립트를 사용하려는 경우에만 사용자 정의 스크립트를 진행하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top