** Sobre el primero problema .. que te muestra el contenido del archivo SQL generado y ofrecido para descargar ..
Revisa las cabeceras HTTP que se usan:
Código PHP:
header("Content-Transfer-Encoding: binary");
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=$filename");
No todo navegador interpreta de la misma forma (para "descargar") dichas cabeceras ..
En
www.php.net/header tienes más ejemplos de otras cabeceras HTTP ..pruebalas.
** Para la otra solución: ¿que mensaje de error te genera?
recuerda que hay un espacio entre $bd > $fichero
Código PHP:
$executa = "c:\mysql\bin\mysqldump.exe -u $usuario --password=$passwd --opt $bd > $fichero";
Un saludo,