Keine MySQL-Verbindung möglich - DLLs fehlen - woher nehmen?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
AnVo
Beiträge: 2
Registriert: Do 13. Feb 2025, 21:22

Keine MySQL-Verbindung möglich - DLLs fehlen - woher nehmen?

Beitrag von AnVo »

Hallo zusammen,
ich habe hier ein kleines Projekt in dem ich eine Applikation mit MySQL-Zugriff schreiben soll. Dafür wurde mir Lazarus (64bit) bereitgestellt. Ich komme aber von Delphi her, da habe ich das Problem nicht. Leider bekomme ich keine Verbindung zur Datenbank hergestellt. Zunächst musste ich mich durch gefühlt hunderte verschiedene "libmysql.dll" durchwühlen, bis ich eine gefunden habe, die sich laden lässt. Leider fehlt jetzt als nächstes die "'caching_sha2_password'.dll". Leider funktioniert diejenige die mit der funktionierenden "libmysql.dll" zusammen "geliefert" wurde nicht (weiterhin "caching_sha2_password'' kann nicht geladen werden).

Ich benutze die TMySQL80Connection als Verbindungskomponente.

Kann mir jemand helfen? Gibt es irgendwo eine vollständige Anleitung wie man mit Lazarus auf MySQL zugreift? Ich finde immer nur "Bröckchen" im Netz, die alle unvollständig sind oder nicht funktionieren.

Wichtig: Die Authentifizierungsmethode umzustellen ist keine Option. Da hat hier niemand Zugriff und der Admin sagt "Nein!"

Gruß,
Andreas

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1207
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: Keine MySQL-Verbindung möglich - DLLs fehlen - woher nehmen?

Beitrag von kralle »

Moin und herzlichen Willkommen im Lazarusforum.

Vielleicht hilft dir die angehängte PDF von mir weiter.

Gruß Kralle
Dateianhänge
Vortrag.pdf
(872.67 KiB) 77-mal heruntergeladen
OS: MX Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6855
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Keine MySQL-Verbindung möglich - DLLs fehlen - woher nehmen?

Beitrag von af0815 »

AnVo hat geschrieben: Do 13. Feb 2025, 21:38 ich habe hier ein kleines Projekt in dem ich eine Applikation mit MySQL-Zugriff schreiben soll. Dafür wurde mir Lazarus (64bit) bereitgestellt. Ich komme aber von Delphi her, da habe ich das Problem nicht. Leider bekomme ich keine Verbindung zur Datenbank hergestellt. Zunächst musste ich mich durch gefühlt hunderte verschiedene "libmysql.dll" durchwühlen, bis ich eine gefunden habe, die sich laden lässt. Leider fehlt jetzt als nächstes die "'caching_sha2_password'.dll". Leider funktioniert diejenige die mit der funktionierenden "libmysql.dll" zusammen "geliefert" wurde nicht (weiterhin "caching_sha2_password'' kann nicht geladen werden).
Wenn du von Delphi kommst, so ist immer das naheliegenste mit ZEOS zu arbeiten (statt SQLdb) ZEOS kann Delphi UND Lazarus. Damit kann man es mit Delphi und ZEOS zu laufen bringen, dann ist der Port nach Lazarus leichter. Das bitte aber nur als Hinweis zu betrachten.

Du hast mit dem zusätzlichen Modul natürlich mehr Komplexität. Die Dateinen werden zusammenpassen müssen. Daher die linmysql.dll und die caching_sha2_password.dll werden nicht aus verschiedenen Paketen zusammenarbeiten oder es fehlen dir weitere Abhängigkeiten. Da kann man mit einem Dependency Walker (Beispiel https://www.dependencywalker.com/ ) einmal nachschauen ob es irgendwelche ungelösten Abhängigkeiten gibt. Manchmal muss man abhängig vom Compiler der die dll's kompiliert hat noch weitere Dateien hinzufügen oder Pakete installieren.
Ganz wichtig ist auch das man die richtige Bitness (32 Bit oder 64 Bit) verwendet. Das ist auch nicht so klar kommuniziert.

In Lazarus gibt es im Tool Verzeichnis den Datadesktop (der auch SQLdb) basiert, wenn man sich den kompiliert und die dll's entsprechend auch in das Verzeichnis kopiert, kann man sehr rasch die Verbindung zu einer DB prüfen ohne das man selbst ein Projekt starten muss. Ich verwende es gerne um die Treiber und Verbindung zu testen. (Verzeichnis \lazarus\tools\lazdatadesktop ). Ich weis nur nicht ob das jetzt die Änderungen für MySQL 8 mitbekommen hat.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

AnVo
Beiträge: 2
Registriert: Do 13. Feb 2025, 21:22

Re: Keine MySQL-Verbindung möglich - DLLs fehlen - woher nehmen?

Beitrag von AnVo »

kralle hat geschrieben: Do 13. Feb 2025, 22:06 Moin und herzlichen Willkommen im Lazarusforum.

Vielleicht hilft dir die angehängte PDF von mir weiter.

Gruß Kralle
Hallo,
danke für die schnelle Antwort. Die Lazarus-Seite der Verbindung habe ich genauso wie dort beschrieben. Leider steht dort auch nicht welche DLLs man braucht, wo man sie herbekommt und auch nicht wo sie hinmüssen. Selbst auf dem PC, auf dem die Datenbank läuft werden die DLLs angeblich nicht gefunden. Also installieren des Servers reicht wohl nicht und einen "Client" für Windows habe ich auch nirgends gefunden.

Danke,
Andreas

AnVo
Beiträge: 2
Registriert: Do 13. Feb 2025, 21:22

Re: Keine MySQL-Verbindung möglich - DLLs fehlen - woher nehmen?

Beitrag von AnVo »

af0815 hat geschrieben: Do 13. Feb 2025, 22:31
AnVo hat geschrieben: Do 13. Feb 2025, 21:38 ich habe hier ein kleines Projekt in dem ich eine Applikation mit MySQL-Zugriff schreiben soll. Dafür wurde mir Lazarus (64bit) bereitgestellt. Ich komme aber von Delphi her, da habe ich das Problem nicht. Leider bekomme ich keine Verbindung zur Datenbank hergestellt. Zunächst musste ich mich durch gefühlt hunderte verschiedene "libmysql.dll" durchwühlen, bis ich eine gefunden habe, die sich laden lässt. Leider fehlt jetzt als nächstes die "'caching_sha2_password'.dll". Leider funktioniert diejenige die mit der funktionierenden "libmysql.dll" zusammen "geliefert" wurde nicht (weiterhin "caching_sha2_password'' kann nicht geladen werden).
Wenn du von Delphi kommst, so ist immer das naheliegenste mit ZEOS zu arbeiten (statt SQLdb) ZEOS kann Delphi UND Lazarus. Damit kann man es mit Delphi und ZEOS zu laufen bringen, dann ist der Port nach Lazarus leichter. Das bitte aber nur als Hinweis zu betrachten.

Du hast mit dem zusätzlichen Modul natürlich mehr Komplexität. Die Dateinen werden zusammenpassen müssen. Daher die linmysql.dll und die caching_sha2_password.dll werden nicht aus verschiedenen Paketen zusammenarbeiten oder es fehlen dir weitere Abhängigkeiten. Da kann man mit einem Dependency Walker (Beispiel https://www.dependencywalker.com/ ) einmal nachschauen ob es irgendwelche ungelösten Abhängigkeiten gibt. Manchmal muss man abhängig vom Compiler der die dll's kompiliert hat noch weitere Dateien hinzufügen oder Pakete installieren.
Ganz wichtig ist auch das man die richtige Bitness (32 Bit oder 64 Bit) verwendet. Das ist auch nicht so klar kommuniziert.

In Lazarus gibt es im Tool Verzeichnis den Datadesktop (der auch SQLdb) basiert, wenn man sich den kompiliert und die dll's entsprechend auch in das Verzeichnis kopiert, kann man sehr rasch die Verbindung zu einer DB prüfen ohne das man selbst ein Projekt starten muss. Ich verwende es gerne um die Treiber und Verbindung zu testen. (Verzeichnis \lazarus\tools\lazdatadesktop ). Ich weis nur nicht ob das jetzt die Änderungen für MySQL 8 mitbekommen hat.
Hallo,
ZEOS habe ich auf probiert, mit noch schlechterem Ergebnis. Die "libmysql.dll" (dieselbe, die mit SQLdb funktioniert) wird da überhaupt nicht gefunden, egal wo sie liegt. Auf meinem Testsystem "zuhause" habe ich gerade mal eine Minimalanwendung erstellt (Nur Fenster mit ZConnection). Mit Delphi kein Problem. Mit Lazarus keine Chance. Mit exakt derselben libmysql.dll! Vielleicht Buggy??

Dependency Walker hat leider schon mit Windows 8 aufgehört. Unter 10 gibt es nur noch einen Application-Hang wenn man ein Modul laden will. Leider.

Der Datadesktop endet auch mit SQL 5.irgendwas. MySQL 8 kennt der leider nicht.

Danke,
Andreas
Zuletzt geändert von AnVo am Fr 14. Feb 2025, 02:43, insgesamt 1-mal geändert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6855
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Keine MySQL-Verbindung möglich - DLLs fehlen - woher nehmen?

Beitrag von af0815 »

Hast du dir einen 32 Bit Lazarus installiert, oder einen 64 Bit ? Weil wenn es mit ZEOS unter Delphi geht, wird normalerweise die 32 Bit variante genommen. Um es zu vergleichen, brauchst du auch einen 32 Bit Lazarus. Weilder 32 Bit Lazarus default 32 Bit erzeugt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Zvoni
Beiträge: 402
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: Keine MySQL-Verbindung möglich - DLLs fehlen - woher nehmen?

Beitrag von Zvoni »

caching_sha2_password benötigt zwei Dinge:
Server-side und client-side aktivierung

https://dev.mysql.com/doc/refman/8.4/en ... stallation
Installing SHA-2 Pluggable Authentication

The caching_sha2_password plugin exists in server and client forms:

The server-side plugin is built into the server, need not be loaded explicitly, and cannot be disabled by unloading it.

The client-side plugin is built into the libmysqlclient client library and is available to any program linked against libmysqlclient.
heisst: deine libmysql.dll MUSS mit dieser Option gebaut worden sein.

https://forums.mysql.com/read.php?10,664655,664726
> I meant the new one: caching_sha2_password.dll which I can't find anywhere.

There's no such standalone dll.
Es gibt keine caching_sha2_password.dll
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Antworten