Pergunta

Eu estou tentando escrever um script PHP para banco de dados MySQL um backup:

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

Quando eu executá-lo a partir do terminal shell, fico com esta:

[arraia] $ php / [ ABSOLUTA PATH ] / db_backup.php

Digite a senha: [ I ENTRADA SENHA ]

mysqldump: erro Got: 1044: Acesso negado para o usuário '[ username ]' @ '208.113.128.0/255.255.128.0' a base de dados '[ SENHA ]' quando selecionando o banco de dados

Ok, agora o que eu realmente não entendo é por isso que ele está chamando o banco de dados como a minha senha. Se eu aponto meu navegador web no arquivo, ele funciona muito bem. Alguém sabe o que eu deveria estar fazendo? Pessoalmente, eu realmente não me importo se é PHP, Python, CGI, etc., contanto que ele pode ser executado em um servidor Apache.

Graças.

Foi útil?

Solução

A sintaxe para a bandeira senha é diferente. Remover o espaço após o sinalizador -p e dar-lhe outro tiro.

Outras dicas

tentar usar os nomes de opção completos; Eu tive um problema semelhante, mas não há tempo para enfrentar a verdadeira raiz do fracasso; no entanto, isso funcionou e funciona para mim:

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

1: sem espaço entre -p e SENHA ex: ". $ db_password" -p

2:. Conceder Todos (se você quiser) privilégios para um usuário específico para esse banco de dados

3: dar o arquivo permissão correta para executar o comando.

Se você está apenas apoiando as coisas Eu recomendaria fortemente usando isso muito fácil, muito configurável, open source cron de backup roteiro . É excelente e eu acho que você vai gostar se isso é tudo o que você está depois.

Se é realmente necessário para ser executado através de apache você poderia usar acentos graves para acionar remotamente o script e então você começa rotações de backup e semanais / mensais backups, compressão e extração de madeira de forma gratuita.

Eu sugiro que você use SqlBuddy , ele resolveu o meu problema como o seu.

Vá com um script personalizado somente se você quiser usar o cron ou um script automatizado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top