FireDAC
Anteriormente conhecido como AnyDAC, o FireDAC é um conjunto de componentes de banco de dados amplamente usado para Delphi. Existem algumas considerações de segurança de thread ao usar o FireDAC. uniGUI é uma aplicação totalmente multithread, portanto os componentes usados em cada sessão devem ser isolados de outras sessões. Conforme descrito na seção Database Connections, cada sessão deve ter sua própria cópia dos componentes Connection. O mesmo princípio se aplica ao FireDAC também. Neste documento da Embarcadero há diretrizes para usar o FireDAC em uma aplicação multithread:
http://docwiki.embarcadero.com/RADStudio/XE8/en/Multithreading_(FireDAC)
Em uniGUI, cada TFDConnection componente deve ser colocado no MainModule ou em um DataModule criado a partir do uniGUI Wizard. Também é possível criar e destruir um datamodule comum como parte do construtor e do destrutor de qualquer TUniForm (porque eles também são privados para sua sessão). Isso garantirá que cada sessão tenha seu próprio TFDConnection componente.

Além disso, coloque um TFDManager componente no ServerModule e defina seu Active propriedade para True no ServerModuleevento do OnCreate s.

Outros componentes a serem colocados em ServerModule são TFDGUIxWaitCursor e TFDPhysXXXDriverLink. TFDPhysXXXDriverLink é o componente driver link para seu mecanismo de banco de dados. Para MySQL deve ser TFDPhysMySQLDriverLink. Para TFDGUIxWaitCursor defina Provider para Console e ScreenCursor para gcrNone.
No OnCreate evento defina FDManager1.Active := True;:
De maneira similar, no OnDestroy evento chame FDManager1.Close;:
Pool de Conexões
Uma das funcionalidades avançadas do FireDAC é o suporte a conexões em pool. Isso permite compartilhar conexões de banco de dados idênticas entre sessões.
Para detalhes, por favor veja:
http://docwiki.embarcadero.com/RADStudio/XE8/en/Multithreading_(FireDAC)
http://docwiki.embarcadero.com/RADStudio/XE8/en/Defining_Connection_(FireDAC)
Veja também nosso projeto de exemplo:
DBLookupComboBox - Custom Remote Query