PHP para Copia de seguridad de base de datos MySQL
-
18-09-2019 - |
Pregunta
Estoy tratando de escribir un script PHP para copia de seguridad de una base de datos MySQL:
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 );
Cuando lo ejecuto desde el terminal de concha, me sale esto:
[pastinaca] $ php / [ ABSOLUTO PATH ] / db_backup.php
Introduce el password: [ I CONTRASEÑA ]
mysqldump: error conseguida: 1044: Acceso denegado para el usuario '[ Nombre de usuario ]' @ '208.113.128.0/255.255.128.0' a la base de datos '[ Contraseña ]' cuando la selección de la base de datos
Bien, ahora lo que realmente no entiendo es por eso que se llama la base de datos como mi contraseña. Si dirijo mi navegador web en el archivo, se ejecuta muy bien. ¿Alguien sabe lo que debería hacer? En lo personal, yo realmente no importa si es PHP, Python, CGI, etc., con tal de que se puede ejecutar en un servidor Apache.
Gracias.
Solución
La sintaxis de la bandera contraseña es diferente. Retire el espacio después de la bandera -p y darle otra oportunidad.
Otros consejos
intentar utilizar los nombres de las opciones de pleno derecho; tuve un problema similar pero no hay tiempo para hacer frente a la verdadera raíz de la falla; sin embargo, esto funcionó y funciona para mí:
/usr/bin/mysqldump \
--user=username \
--password=password \
dbname > mysqldump.sql
1: ningún espacio entre -p y CONTRASEÑA por ejemplo: -p ". $ contraseña_bd"
2: conceder. Todos (si lo desea) los privilegios de un usuario específico para esa base de datos
3: dar al archivo permisos correctos para ejecutar el comando.
Si acaba de realizar copias de las cosas que recomendaría encarecidamente el uso de rel="nofollow esta muy configurable, fuente muy fácil, abierto cron escritura de reserva . Es excelente y creo que te gustará si eso es todo lo que busca.
Si es realmente necesario para su ejecución a través de Apache se puede usar acentos abiertos para activar remotamente el guión y luego se obtiene la rotación de copia de seguridad y copias de seguridad semanales / mensuales, compresión y registro de forma gratuita.
Le sugiero que use SqlBuddy , resolvió mi problema como tu.
Proceder con un script personalizado sólo si desea utilizar cron o un script automatizado.