Puis dans ton script shell, tu peux utiliser le binaire mysql pour procéder à l'extraction.
mysql -h host -u XXX -pYYY DBNAME -e "REQUETE_SELECTION" > export.txt
Exemple :
----------------------
Serveur : 192.168.0.22
User : root
Passe : azerty
Base : dbdemo
Exporter dans /var/www/ puis fichier export.txt
----------------------
mysql -h 192.168.0.22 -u root -pazerty dbdemo -e "SHOW TABLES;" > /var/www/export.txt
[list]
* host représente le nom ou l'adresse IP de la machine sur laquelle la base de données que vous désirez exporter est installée. Par défaut il s'agit de localhost, c'est-à-dire la machine à partir de laquelle la commande mysql est lancée
* XXX représente l'utilisateur avec lequel vous désirez vous connecter. Par défaut il s'agit de l'utilisateur root
* YYY représente le mot de passe de l'utilisateur avec lequel vous désirez vous connecter. Si vous n'indiquez pas de mot de passe, celui-ci sera demandé de manière interactive. Il ne doit pas y avoir d'espace entre -p et le mot de passe fourni, contrairement aux autres champs
* DBNAME est le nom de la base de données.
* REQUETE_SELECTION est la requête sélectionnant les données à extraire.
* export.txt est le nom du fichier dans lequel la base va être exportée. Si aucun chemin absolu n'est précisé, le fichier sera stocké dans le même répertoire que la commande mysqldump. Attention de ne pas lui donner un nom d'un fichier existant dans ce répertoire !
Il reste à soit partager un dossier dans lequel ton utilisateur à les droits d'accès (via samba par exemple), soit à mettre en place un script php que l'utilisateur appellera pour télécharger le fichier.