Sconsiglio vivamente i programmi client che si connettono direttamente a un server di database tramite Internet, per i seguenti motivi:
- Le librerie client sono progettate e costruite partendo dal presupposto che il database sia a pochi millisecondi di distanza, specialmente protocolli molto loquaci (MSSQL è tra questi). Di conseguenza, le operazioni brevi potrebbero richiedere molto più tempo.
- È un problema di sicurezza, non solo stai esponendo il tuo server di database a Internet, ma stai anche incorporando i dettagli della connessione (come le password) nella tua applicazione.
- Non si presta alla scalabilità. E se introducessi più server di database con bilanciamento del carico o failover, dovresti riscrivere il tuo client.
- Presume inoltre che non ci saranno problemi di connettività. Molte reti (in particolare le reti mobili) limitano l'attività al di fuori della porta 80/443 per prevenire l'abuso della propria rete (come gli utenti zombie che lanciano attacchi).
La soluzione ideale in questi casi è sviluppare un frontend web-service per il tuo database; la tua applicazione si interfaccia quindi con il servizio Web anziché con il tuo database. Questo ha altri vantaggi.
Naturalmente, i client (soprattutto i client mobili) dovrebbero utilizzare una cache di dati in modo che l'applicazione continui a funzionare anche offline.
Tornando all'argomento:supponendo che tu voglia ancora utilizzare una connessione diretta, non vedo perché la libreria client MySQL non funzionerà su 4.5. È possibile modificare il manifest/la configurazione di un assembly in modo che venga eseguito su versioni future di .NET CLR (incontrerete problemi solo se detta libreria utilizza tipi e membri rimossi dal momento o si basa su un comportamento modificato. Il framework .NET ha una buona reputazione per la compatibilità con le versioni precedenti e successive).