Cada sistema de base de datos viene con algún programa para volcar sus contenidos.
Usted puede simplemente llamar a ese programa a partir de PHP usando system()
o shell_exec()
.
Por ejemplo, si se utiliza PostgreSQL con activado Ident authentication y desea volcar la base de datos test
directamente como texto SQL para el navegador, es tan simple como:
<?php
header('Content-type: text/plain');
system('pg_dump test');
?>
Al utilizar MySQL con el usuario de base de datos y la contraseña almacenada en ~/.my.cnf
, también es muy simple:
<?php
header('Content-type: text/plain');
system('mysqldump test');
?>
sin embargo, no hacen esto:
<?php
header('Content-type: text/plain');
system('mysqldump -utestuser -ptestpassword test');
?>
debido a la transmisión de una contraseña como línea de comandos argumento es
very insecure.
¿Estoy en lo cierto al pensar que también podría ejecutar esto a través de una consulta SQL? Algunos proveedores de alojamiento compartido no permiten llamadas al sistema. – Ross
Si tiene un proveedor de hosting que no permite system() o shell_exec(), debe cambiar a uno serio. Dicha restricción realmente no agrega seguridad. Es simplemente molesto para los clientes. – vog