PHP Script para Banco de Dados MySQL backup
-
18-09-2019 - |
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.
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.