Je déconseille fortement aux programmes clients de se connecter directement à un serveur de base de données via Internet, pour les raisons suivantes :
- Les bibliothèques clientes sont conçues et construites autour de l'hypothèse que la base de données est à quelques millisecondes, en particulier les protocoles très bavards (MSSQL en fait partie). Les opérations courtes peuvent donc prendre beaucoup plus de temps.
- C'est un problème de sécurité, non seulement vous exposez votre serveur de base de données à Internet, mais vous intégrez également des détails de connexion (tels que des mots de passe) dans votre application.
- Il ne se prête pas à l'évolutivité. Que se passe-t-il si vous introduisez plusieurs serveurs de base de données à charge équilibrée ou de basculement, vous devrez réécrire votre client.
- Cela suppose également qu'il n'y aura pas de problèmes de connectivité. De nombreux réseaux (en particulier les réseaux mobiles) restreignent l'activité en dehors du port 80/443 pour empêcher les abus de leur réseau (comme les utilisateurs zombies lançant des attaques).
La solution idéale dans ces cas est de développer une interface de service Web pour votre base de données ; votre application s'interfacerait alors avec le web-service au lieu de votre base de données. Cela a d'autres avantages.
Bien sûr, les clients (en particulier les clients mobiles) doivent utiliser un cache de données afin que l'application continue de fonctionner hors ligne.
Revenons au sujet :en supposant que vous souhaitiez toujours utiliser une connexion directe, je ne vois pas pourquoi la bibliothèque cliente MySQL ne fonctionnera pas sur 4.5. Vous pouvez modifier le manifeste/la configuration d'un assembly afin qu'il s'exécute sur les futures versions du CLR .NET (vous ne rencontrerez des problèmes que si ladite bibliothèque utilise des types et des membres supprimés depuis ou s'appuie sur un comportement modifié. Le framework .NET a une bonne réputation pour la compatibilité ascendante et descendante).