Herstellen einer Verbindung zu MySQL Server (FireDAC)
Nach oben zu Datenbankkonnektivität (FireDAC)
In diesem Thema wird beschrieben, wie eine Verbindung zu MySQL Server hergestellt wird.
Inhaltsverzeichnis
Unterstützte Versionen
Der native FireDAC-Treiber unterstützt:
- MySQL Server Community-, Enterprise- und Embedded-Editionen von Version 3.21 bis zu Version 8.0.23.
- MariaDB von Version 5.5 bis zu Version 10.6. Außerdem wurde mit RAD Studio 11.1 die Unterstützung für 10.6-Server mit einem 10.6-Client hinzugefügt.
Client-Software
Windows-Client-Software
Für FireDAC ist eine der folgenden Bibliotheken erforderlich:
- Die Client-Bibliothek LIBMYSQL.DLL zum Herstellen einer Verbindung mit dem MySQL-Server.
- Die eingebettete Serverbibliothek LIBMYSQLD.DLL. Siehe MySQL Embedded-Server weiter unten in diesem Thema.
Sie können diese Bibliotheken aus dem Ordner "Bin" oder "Lib" einer Serverinstallation (Details (EN)) übernehmen und in einen der folgenden Ordner kopieren:
- in einen in der Umgebungsvariable PATH aufgeführten Ordner (z. B. <Windows>\SYSTEM32)
- In Ihren Anwendungs-EXE-Ordner.
Zum Herstellen einer Verbindung zu einer 64-Bit-Version von MySQL 8.0 zur Laufzeit benötigen Sie Folgendes:
- LIBMYSQL.DLL.
- VS2015 Laufzeit 64 Bit.
- Zwei Bibliotheken aus dem MySQL MSVC++ Connectors-Paket der Version 8.0:
-
- LIBCRYPTO-1_1-x64.DLL.
-
- LIBSSL-1_1-x64.DLL.
herunter, um zur Entwurfszeit eine Verbindung herzustellen oder um diesen Server mit einer 32-Bit-Anwendung zu verwenden.
Alternativ können Sie die erforderlichen Dateien in einen beliebigen anderen Ordner kopieren und ihren Pfad in FDDrivers.ini angeben:
[MySQL]
VendorLib=<folder>\libmysql.dll
Wenn die MySQL-Client-Bibliothek nicht ordnungsgemäß installiert wurde, wird beim Verbindungsversuch eine Exception ausgelöst:
macOS-Client-Software
FireDAC benötigt:
- die x86-Client-Bibliothek libmysqlclient.dylib.
Sie können sie als Connector/C für macOS (hier) herunterladen und in den Ordner "/usr/local" mit dem folgenden Befehl extrahieren:
sudo tar -C /usr/local -zxvf mysql-connector-c-6.1.6-osx10.8-x86.tar.gz
iOS-Client-Software
Im Artikel (Weitere Informationen) wird erklärt, wie libmysqlclient.dylib für iOS erzeugt wird.
Hinweis: Embarcadero Technologies hat dies nicht getestet und bietet dafür auch keine Unterstützung an.
Linux-Client-Software
Um die MySQL-Client-Bibliothek zu installieren:
-
Auf Ubuntu Server 16.04 LTS, führen Sie aus:
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
-
Auf Red Hat Enterprise Linux 7, führen Sie aus:
sudo yum install mysql-libs sudo ln -s /usr/lib64/mysql/libmysqlclient.so.18 /usr/lib64/mysql/libmysqlclient.so
Treibereinbindung
So binden Sie den Treiber ein:
- Ziehen Sie aus der Seite "FireDAC Links" der Komponentenpalette eine TFDPhysMySQLDriverLink-Komponente auf das Formular.
- Oder nehmen Sie die Unit FireDAC.Phys.MySQL in die uses-Klausel auf.
Verbindungsdefinitionsparameter
Für eine Verbindung mit einem MySQL-DBMS ist für die meisten Anwendungen die Angabe von DriverID, Server, Database, User_Name, Password und CharacterSet erforderlich (Einzelheiten finden Sie unter Definieren von Verbindungen (FireDAC)).
DriverID=MySQL
Parameter | Beschreibung | Beispielwert |
---|---|---|
Server | Die TCP/IP-Adresse oder der Host-Name des Servers, auf dem ein MySQL-Server ausgeführt wird. | 127.0.0.1 |
Port | Der TCP/IP-Port, über den der MySQL-Server empfängt. | 3306 |
Database | Name der aktuellen Datenbank für die Verbindung. Wenn "Database" nicht angegeben ist, wird keine aktuelle Datenbank eingerichtet. | MyDB |
User_Name | Die MySQL-Benutzer-ID. | root |
Password | Das MySQL-Benutzerpasswort. | |
CharacterSet | Der Standardzeichensatz für die Verbindung. Die Sortierfolge der Verbindung wird zur Standardsortierfolge des Zeichensatzes. Einzelheiten finden Sie bei der Anweisung SET NAMES. | cp1251 |
Compress | Geben Sie True an, um die Komprimierung des Netzwerkverkehrs zu aktivieren. Standardmäßig ist dieser Parameter auf False gesetzt. | |
UseSSL |
Geben Sie True an, um eine SSL-Verbindung zu aktivieren. Standardmäßig ist dieser Parameter auf False gesetzt. Wenn Sie "UseSSL=True" angeben, müssen Sie zusätzlich die Verbindungsdefinitionsparameter angeben:
Weitere Einzelheiten finden Sie in der MySQL-Dokumentation: |
True |
LoginTimeout | Steuert die Dauer in Sekunden bis zur Zeitüberschreitung einer Anwendung beim Versuch, eine Verbindung herzustellen. | 30 |
ReadTimeout | Die Zeitüberschreitung in Sekunden für Versuche vom Server zu lesen. Jeder Versuch verwendet diesen Zeitüberschreitungswert und bei Bedarf sind Neuversuche möglich, sodass der effektive Gesamt-Zeitüberschreitungswert dreimal höher als der Optionswert ist. Sie können diesen Wert festlegen, damit eine abgebrochene Verbindung früher als durch den von TCP/IP Close_Wait_Timeout gesetzten Wert von 10 Minuten entdeckt werden kann. Diese Option kann nur für TCP/IP-Verbindungen und vor MySQL 5.1.12 nur für Windows verwendet werden. Dieser Parameter ist standardmäßig nicht festgelegt. | 5 |
WriteTimeout | Die Zeitüberschreitung in Sekunden für Versuche auf den Server zu schreiben. Jeder Versuch verwendet diesen Zeitüberschreitungswert und bei Bedarf sind net_retry_count Neuversuche möglich, sodass der effektive Gesamt-Zeitüberschreitungswert net_retry_count mal höher als der Optionswert ist. Diese Option kann nur für TCP/IP-Verbindungen und vor MySQL 5.1.12 nur für Windows verwendet werden. Dieser Parameter ist standardmäßig nicht festgelegt. | 5 |
ResultMode |
Steuert das Abrufen einer Ergebnismenge auf den Client. Der Vorgabewert ist Store.
|
Use |
TinyIntFormat |
Steuert die TINYINT(1)-Darstellung. Der Vorgabewert ist Boolean.
|
Integer |
MetaDefCatalog | Standarddatenbankname. Im Entwurfszeitcode wird der Katalogname im Objektnamen weggelassen, wenn er MetaDefCatalog entspricht. Durch Festlegen von MetaDefCatalog wird die aktuelle Datenbank in der MySQL-Sitzung nicht geändert. | MyDB |
MySQL Embedded-Server
Wichtig:
- Alle Pfadargumentwerte verwenden Unix-Backslashes (umgekehrte Schrägstriche). Sie können Pfade relativ zum Anwendungs-EXE-Ordner angeben, wodurch die Bereitstellung vereinfacht wird.
- libmysqld.dll und errmsg.sys müssen dieselbe Version haben.
- libmysqld.dll v 5.1.34, wie wahrscheinlich einige andere Versionen, ist beschädigt und funktioniert nicht. Aktualisieren Sie auf eine andere Version.
- Die allgemeine Einrichtung von MySQL Embedded kann schwierig sein. Hinweise für eine vereinfache Einrichtung finden Sie in den Beispielen weiter unten.
- Im Falle von inkorrekten Argumenten bei der Initialisierung von libmysqld.dll kann die Anwendung ohne Meldung beendet werden.
Führen Sie die folgenden Aktionen aus, um Ihre Anwendung für die Zusammenarbeit mit einem MySQL Embedded-Server vorzubereiten:
- Fügen Sie die Komponente TFDPhysMySQLDriverLink in Ihre Anwendung ein. Beachten Sie, dass mit "Argument hinzufügen" das Hinzufügen eines Arguments zur Liste TFDPhysMySQLDriverLink.EmbeddedArgs gemeint ist. Optional können Sie die Treiberkonfigurationsdatei verwenden.
- Kopieren Sie LIBMYSQLD.DLL in den Anwendungs-EXE-Ordner. Wenn dieser Ordner vom Ordner mit der ausführbaren Datei der Anwendungs abweicht, fügen Sie das Argument --basedir=<LIBMYSQLD-Ordner> hinzu, und setzen Sie TADPhysMySQLDriverLink.VendorLib auf <LIBMYSQLD-Ordner>\LIBMYSQLD.DLL.
- Wenn nur englische Meldungen verwendet werden, kopieren Sie share\english\errmsg.sys in den <LIBMYSQLD-Ordner>, und fügen Sie das Argument --language=<LIBMYSQLD-Ordner> hinzu. Wenn mehrsprachige Meldungen verwendet werden, kopieren Sie die entsprechenden Ordner aus share\* in den <LIBMYSQLD-Ordner>, und behalten Sie die Verzeichnisstruktur bei. Sie müssen das Argument --language nicht hinzufügen, weil <LIBMYSQLD-Ordner>\share\* der Standardspeicherort ist.
- Wenn andere Zeichensätze als ASCII verwendet werden, kopieren Sie share\english\charsets in den <LIBMYSQLD-Ordner>, und behalten Sie die Verzeichnisstruktur bei. Das Argument--character-sets-dir muss nicht hinzugefügt werden, weil <LIBMYSQLD-Ordner>\share\charsets der Standardspeicherort ist.
- Wenn sich die Datenbankdateien in anderen Ordnern als dem <LIBMYSQLD-Ordner> befinden, fügen Sie das Argument --datadir=<Datenbankdateien-Ordner> hinzu. Für die Version 5.6.11 ist die Angabe dieses Arguments erforderlich.
- Wenn die InnoDB-Engine nicht verwendet wird, fügen Sie das Argument --skip-innodb hinzu. Fügen Sie andernfalls das Argument --innodb_data_home_dir=<Datenbankdateien-Ordner> hinzu, wobei der Wert das InnoDB-Datenspeicherverzeichnis ist.
- Wenn Ihre Anwendung keine Verbindung zu einem Remote-MySQL-Server herstellt, fügen Sie das Argument --skip-networking hinzu.
- Wenn Ihre Anwendung eine externe Einstellungsdatei verwendet, fügen Sie das Argument --defaults-file=my.ini hinzu.
- Wenn Ihre Anwendung MySQL-Plug-ins verwendet, fügen Sie das Argument --plugin_dir=<Plug-in-Ordner> hinzu. Normalerweise befinden sich Plug-ins im <LIBMYSQLD-Ordner>\lib\plugin.
- Fügen Sie weitere Argumente zur Leistungsoptimierung hinzu.
Um eine Verbindung zu einem MySQL Embedded-Server herzustellen, müssen Sie die Verbindungsdefinitionsparameter "Server", "Host", "Port", "User_Name" und "Password" nicht angeben. Wenn Sie das Argument --skip-networking nicht angeben, dann können Sie mithilfe der Datei libmysqld.dll eine Verbindung zu Remote-MySQL-Servern herstellen, genauso wie mit der normalen libmysql.dll.
Einfaches Konfigurationsbeispiel:
- Zeichensätze: Nur ASCII
- Meldungen: Nur Englisch
- Datenbank: der EXE-Ordner
App folder: <app>.EXE LIBMYSQLD.DLL errmsg.sys <DB files> Arguments: --datadir=./ --language=./ --skip-innodb --skip-networking
Erweitertes Konfigurationsbeispiel:
- Zeichensätze: mehrere
- Meldungen: mehrere
- Datenbank: Unterordner "data"
App folder: <app>.EXE LIBMYSQLD.DLL share\* share\charsets data\* data\<DB files> Arguments: --datadir=./data --skip-innodb --skip-networking
Anwendungsfälle
Verwenden einer sicheren Verbindung
Legen Sie für die Verwendung der TLS/SSL-Verschlüsselung den Parameter UseSSL auf den Wert True
fest, und geben Sie dann die Parameter SSL_key, SSL_cert und SSL_ca wie folgt an:
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
Sie können auch die Parameter SSL_capath und SSL_cipher verwenden; weitere Informationen finden Sie beim Eintrag UseSSL in der obigen Tabelle Verbindungsdefinitionsparameter.
my.cnf
verwenden.Weitere Anwendungsfälle
- Herstellen einer Verbindung zu einem lokal ausgeführtem Server, der über den Standard-Port (3306) empfängt:
DriverID=MySQL Database=addemo User_Name=root Password=
- Herstellen einer Verbindung zu einem Remote-Server, der nicht über den Standard-Port empfängt, unter Verwendung von Unicode für Zeichendaten:
DriverID=MySQL Server=mysrv Port=3307 Database=addemo CharacterSet=utf8 User_Name=me Password=123
- Herstellen einer Verbindung zu einem eingebetteten Server unter Verwendung von Unicode für Zeichendaten:
DriverID=MySQL Database=addemo CharacterSet=utf8
Siehe auch
- Allgemeine Verbindungsparameter
- FAQs
- Konfigurieren von FireDAC-Treibern
- Verwalten von FireDAC-Verbindungsdefinitionen
Beispiel
- FireDAC MySQL (Beispiel)