Connexion à MySQL Server (FireDAC)
Remonter à Connectivité des bases de données (FireDAC)
Cette rubrique explique comment établir une connexion à MySQL Server.
Sommaire
Versions prises en charge
Le pilote natif FireDAC prend en charge :
- MySQL Server Community Edition, Enterprise Edition et Embedded Edition version 3.21 et ultérieure.
- MariaDB 5.5 et versions ultérieures.
Logiciel client
Logiciel client Windows
FireDAC requiert l'une des bibliothèques x86 ou x64 suivantes :
- La bibliothèque client LIBMYSQL.DLL pour établir la connexion à MySQL Server. Dans l'idéal, sa version doit être équivalente à celle du serveur.
- La bibliothèque du serveur embarqué LIBMYSQLD.DLL. Voir Serveur MySQL embarqué plus loin dans cette rubrique.
Vous pouvez les extraire du dossier Bin ou Lib d'installation d'un serveur (détails) et les placer dans :
- un dossier inclus dans votre variable d'environnement PATH (par exemple, <Windows>\SYSTEM32)
- le dossier EXE de votre application.
Remarque : Si vous utilisez un serveur SQL 64 bits, les DLL client seront également en 64 bits. Pour établir une connexion à la conception, ou pour utiliser ce serveur avec une compilation 32 bits, téléchargez les DLL 32 bits depuis http://dev.mysql.com/downloads/connector/c/#downloads.
tout autre dossier, en spécifiant dans FDDrivers.ini :
[MySQL]
VendorLib=<folder>\libmysql.dll
Si la bibliothèque client MySQL n'a pas été installée correctement, une exception est déclenchée quand vous essayez de vous connecter :
Logiciel client macOS
FireDAC requiert :
- la bibliothèque client libmysqlclient.dylib x86.
Vous pouvez la télécharger sous forme de Connecteur/C pour macOS (ici) et l'extraire dans le dossier /usr/local, à l'aide de la commande :
sudo tar -C /usr/local -zxvf mysql-connector-c-6.1.6-osx10.8-x86.tar.gz
Logiciel client iOS
L'article (plus d'informations (EN)) explique comment construire libmysqlclient.dylib pour iOS.
Notez que Embarcadero Technologies n'a pas testé ce produit et ne fournit pas d'assistance pour lui.
Logiciel client Linux
Pour installer la bibliothèque client MySQL :
-
Sur Ubuntu Server 16.04 LTS, exécutez :
sudo apt-get install libmysqlclient20 sudo ln -s /usr/lib/x86_64-linux-gnu/libmysqlclient.so.20 /usr/lib/x86_64-linux-gnu/libmysqlclient.so
-
Sur Red Hat Enterprise Linux 7, exécutez :
sudo yum install mysql-libs sudo ln -s /usr/lib64/mysql/libmysqlclient.so.18 /usr/lib64/mysql/libmysqlclient.so
Liaison du pilote
Pour lier le pilote :
- déposez un composant TFDPhysMySQLDriverLink de la page "Liens FireDAC" de la palette de composants
- ou incluez l'unité FireDAC.Phys.MySQL dans la clause uses.
Paramètres de définition de la connexion
Pour établir une connexion au SGBD MySQL, la plupart des applications requièrent que vous spécifiiez DriverID, Server, Database, User_Name, Password, et CharacterSet. Pour plus de détails, voir Définition d'une connexion (FireDAC).
DriverID=MySQL
Paramètre | Description | Valeur exemple |
---|---|---|
Server | Adresse TCP/IP ou nom d'hôte du serveur exécutant un serveur MySQL. | 127.0.0.1 |
Port | Port TCP/IP sur lequel le serveur MySQL écoute. | 3306 |
Database | Nom de la base de données en cours pour la connexion. Si ce paramètre n'est pas spécifié, aucune base de données n'est configurée. | MyDB |
User_Name | ID utilisateur MySQL. | root |
Password | Mot de passe utilisateur MySQL. | |
CharacterSet | Jeu de caractères par défaut de la connexion. Le classement de la connexion devient le classement par défaut du jeu de caractères. Pour plus de détails, voir l'instruction SET NAMES. | cp1251 |
Compress | Spécifiez True pour activer la compression du trafic réseau. La valeur par défaut est False. | |
UseSSL |
Spécifiez True pour activer la connexion SSL. La valeur par défaut est False. L'attribution de la valeur True à UseSSL requiert en outre la spécification des paramètres de définition de connexion suivants :
Pour plus d'informations, voir la documentation MySQL : |
True |
LoginTimeout | Contrôle la durée, en secondes, s'écoulant avant qu'une application dépasse le temps imparti pour établir la connexion. | 30 |
ReadTimeout | Délai, en secondes, pour tenter de lire à partir du serveur. Comme chaque tentative utilise cette valeur et que plusieurs tentatives peuvent s'avérer nécessaires, la valeur totale du délai efficace équivaut à trois fois la valeur de l'option. Vous pouvez définir ce paramètre de façon à ce qu'une connexion perdue puisse être détectée avant la valeur TCP/IP Close_Wait_Timeout de 10 minutes. Cette option fonctionne uniquement pour les connexions TCP/IP et, pour les versions antérieures à MySQL 5.1.12, uniquement pour Windows. Par défaut, elle n'est pas définie. | 5 |
WriteTimeout | Délai, en secondes, pour tenter d'écrire sur le serveur. Comme chaque tentative utilise cette valeur et que plusieurs tentatives net_retry_count peuvent s'avérer nécessaires, la valeur totale du délai efficace équivaut à net_retry_count fois la valeur de l'option. Cette option fonctionne uniquement pour les connexions TCP/IP et, pour les versions antérieures à MySQL 5.1.12, uniquement pour Windows. Par défaut, elle n'est pas définie. | 5 |
ResultMode |
Contrôle l'extraction d'un ensemble de résultats vers un client. La valeur par défaut est Store.
|
Use |
TinyIntFormat |
Contrôle la représentation TINYINT(1). La valeur par défaut est Boolean.
|
Integer |
MetaDefCatalog | Nom de la base de données par défaut. En mode conception, le code exclut le nom du catalogue du nom d'objet s'il est égal à MetaDefCatalog. Le fait de définir MetaDefCatalog ne change pas la base de données actuelle dans la session MySQL. | MyDB |
Serveur MySQL Embarqué
Important :
- Toutes les valeurs relatives aux arguments de chemin utilisent des barres obliques Unix. Vous pouvez spécifier des chemins par rapport au dossier EXE de l'application, ce qui simplifie le déploiement.
- libmysqld.dll et errmsg.sys doivent être de la même version.
- libmysqld.dll v 5.1.34, comme probablement d'autres versions, est endommagée et ne fonctionne pas. Effectuer la mise à jour vers une autre version.
- La configuration générale de MySQL Embarqué peut s'avérer complexe. Vous trouverez plus loin des exemples simplifiant ce processus.
- En cas d'arguments incorrects pour l'initialisation de libmysqld.dll, l'application peut se terminer en mode silencieux.
Pour préparer votre application à fonctionner avec un serveur MySQL Embarqué, procédez comme suit :
- Incluez le composant TFDPhysMySQLDriverLink dans votre application. Veuillez noter que "ajouter un argument" signifie "ajouter un argument à la liste TFDPhysMySQLDriverLink.EmbeddedArgs". Vous pouvez également utiliser le fichier de configuration des pilotes.
- Copiez LIBMYSQLD.DLL dans le dossier exécutable de l'application. Si ce dossier diffère du dossier exécutable de l'application, ajoutez l'argument --basedir=< dossier LIBMYSQLD> et définissez TADPhysMySQLDriverLink.VendorLib sur <dossier LIBMYSQLD >\LIBMYSQLD.DLL.
- Si seuls des messages en anglais sont utilisés, copiez share\english\errmsg.sys vers <dossier LIBMYSQLD > et ajoutez l'argument --language=<dossier LIBMYSQLD >. Si vous utilisez des messages en plusieurs langues, copiez les dossiers appropriés de share\* vers <dossier LIBMYSQLD>, en conservant la structure des répertoires. Il est inutile d'ajouter l'argument --language, car <dossier LIBMYSQLD>\share\* est l'emplacement par défaut.
- Si les jeux de caractères utilisés ne sont pas ASCII, copiez share\english\charsets vers <dossier LIBMYSQLD >, en préservant la structure de répertoires. Il est inutile d'ajouter l'argument --character-sets-dir, car <dossier LIBMYSQLD>\share\charsets est l'emplacement par défaut.
- Si les fichiers de la base de données se trouvent dans d'autres dossiers que <dossier LIBMYSQLD>, ajoutez l'argument --datadir=<dossier des fichiers de la base de données>. Avec la version 5.6.11, vous devez spécifier cet argument.
- Si le moteur InnoDB n'est pas utilisé, ajoutez l'argument --skip-innodb. Sinon, ajoutez l'argument --innodb_data_home_dir=<dossier des fichiers de la base de données>, dont la valeur est le répertoire de l'espace de données InnoDB.
- Si votre application ne se connecte pas à un serveur MySQL distant, ajoutez l'argument --skip-networking.
- Si votre application utilise un fichier de paramètres externe, ajoutez l'argument --defaults-file=my.ini.
- Si votre application utilise des plugins MySQL, ajoutez l'argument --plugin_dir=<dossier des plugins>. Normalement, les plugins se trouvent dans <dossier LIBMYSQLD>\lib\plugin.
- Ajoutez les arguments appropriés pour optimiser les performances.
Pour vous connecter au serveur MySQL embarqué, il est inutile de spécifier les paramètres de définition de connexion Server, Host, Port, User_Name, Password. Si vous ne spécifiez pas l'argument --skip-networking, vous pouvez utiliser libmysqld.dll pour vous connecter aux serveurs MySQL distants, comme avec le fichier libmysql.dll normal.
Exemple de configuration simple :
- Jeux de caractères : ASCII uniquement
- Messages : anglais uniquement
- Base de données : dossier EXE
App folder: <app>.EXE LIBMYSQLD.DLL errmsg.sys <DB files> Arguments: --datadir=./ --language=./ --skip-innodb --skip-networking
Exemple de configuration étendue :
- Jeux de caractères : multiple
- Messages : multiple
- Base de données : sous-dossier "données"
App folder: <app>.EXE LIBMYSQLD.DLL share\* share\charsets data\* data\<DB files> Arguments: --datadir=./data --skip-innodb --skip-networking
Exemples d'utilisation
Utilisation d'une connexion sécurisée
Pour utiliser l'encryptage TLS/SSL, définissez le paramètre UseSSL avec True
comme valeur, puis spécifiez les paramètres SSL_key, SSL_cert et SSL_ca comme suit :
DriverID=MySQL Server=mysrv Port=3307 Database=addemo UseSSL=True SSL_ca=ca-cert.pem SSL_cert=client-cert.pem SSL_key=client-key.pem
Vous pouvez aussi utiliser les paramètres SSL_capath et SSL_cipher. Voir l'entrée UseSSL dans le tableau Paramètres de définition de la connexion ci-dessus pour plus d'informations.
- Remarque : Vous pouvez aussi utiliser le fichier de configuration
my.cnf
.
Autres cas d'utilisation
- Connexion à un serveur exécuté localement, écoutant sur le port par défaut (3306) :
DriverID=MySQL Database=addemo User_Name=root Password=
- Connexion à un serveur distant, écoutant sur un port autre que le port par défaut, en utilisant Unicode pour les données des caractères :
DriverID=MySQL Server=mysrv Port=3307 Database=addemo CharacterSet=utf8 User_Name=me Password=123
- Connexion à un serveur embarqué, en utilisant Unicode pour les données des caractères :
DriverID=MySQL Database=addemo CharacterSet=utf8
Voir aussi
- Paramètres de connexion communs
- FAQ
- Comment configurer les pilotes FireDAC
- Comment gérer les définitions des connexions FireDAC
Exemples
- Exemple FireDAC MySQL