Q1 - Votre mot de passe MySQL et d'autres paramètres spécifiques à l'application doivent être stockés dans un fichier séparé en dehors de votre racine Web. Vous pouvez soit le mettre directement hors de la racine Web, soit le restreindre via .htaccess. Vous pouvez inclure le fichier ou le lire tant que vous connaissez le chemin.
Q2 - Les fichiers binaires doivent également être stockés en dehors de la racine Web. L'idéal pour les servir serait de les avoir téléchargeables via un fichier PHP. De cette façon, vous pouvez vous authentifier avant que le fichier ne soit servi et vous pouvez rendre les liens temporaires afin que les utilisateurs ne puissent pas le partager avec d'autres personnes
Q3 - Si vous utilisez la méthode ci-dessus, vous n'avez pas besoin de la stocker en tant que BLOB dans MySQL
Q4 - Je n'ai pas vraiment rencontré quoi que ce soit qui fasse et soit une bibliothèque/un script autonome. Les servir via les en-têtes corrects ne devrait cependant pas être trop difficile.