Plugin caching_sha2_password konnte in Rust Diesel mit MySQL unter Verwendung von Musl nicht geladen werden?MySql

MySQL DBMS-Forum
Guest
 Plugin caching_sha2_password konnte in Rust Diesel mit MySQL unter Verwendung von Musl nicht geladen werden?

Post by Guest »

Ich arbeite an einer Rust-Anwendung, die mit musl erstellt wurde, um eine statisch verknüpfte Binärdatei für ein kleines Docker-Image zu erstellen. Es ist mir gelungen, die mysqlclient-Bibliothek für musl manuell neu zu kompilieren, und ich dachte, alles sei korrekt eingerichtet.
Als ich jedoch versuchte, eine Verbindung zu MySQL 8.0 herzustellen< /code>-Datenbank erhalte ich den folgenden Fehler:

Code: Select all

gateway     | thread 'main' panicked at src/db/setup.rs:25:10:
gateway     | Failed to create DB Pool: Error(Some("Plugin caching_sha2_password could not be loaded: Dynamic loading not supported"))
gateway     | note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Ich verwende das Diesel ORM mit dem MySQL-Backend in meiner Rust-Anwendung.
Die Docker-Datei für die Anwendung verwendet musl für die statische Verknüpfung. Hier ist der relevante Teil meiner Docker-Datei:

Code: Select all

FROM messense/rust-musl-cross:${BUILD_PLATFORM}-musl AS builder
...
# Manually compile MariaDB client library for musl
WORKDIR /tmp
RUN curl -LO https://downloads.mariadb.com/Connectors/c/connector-c-3.3.4/mariadb-connector-c-3.3.4-src.tar.gz
RUN tar xzf mariadb-connector-c-3.3.4-src.tar.gz
RUN mkdir build
WORKDIR /tmp/build
RUN sed 's/STRING(STRIP ${extra_dynamic_LDFLAGS} extra_dynamic_LDFLAGS)//' -i ../mariadb-connector-c-3.3.4-src/mariadb_config/CMakeLists.txt
RUN sed 's/LIST(REMOVE_DUPLICATES extra_dynamic_LDFLAGS)//' -i ../mariadb-connector-c-3.3.4-src/mariadb_config/CMakeLists.txt
RUN CC=aarch64-unknown-linux-musl-gcc \
LDFLAGS=-L/usr/local/musl/lib \
cmake \
-DWITH_SSL=OPENSSL \
-DWITH_TLS=OPENSSL \
-DOPENSSL_ROOT_DIR=/usr/local/musl \
-DOPENSSL_USE_STATIC_LIBS=1 \
-DWITH_CURL=0 \
../mariadb-connector-c-3.3.4-src
RUN make mariadbclient
RUN cp libmariadb/libmariadbclient.a /usr/local/musl/lib/libmysqlclient.a
...
Der Fehler scheint mit dem caching_sha2_password-Plugin von MySQL zusammenzuhängen, das der Standardauthentifizierungsmechanismus für MySQL 8.0 ist. Ich vermute, dass das Problem darauf zurückzuführen ist, dass das dynamische Laden aufgrund der statischen Verknüpfung mit musl nicht unterstützt wird.
Ich habe mariadbclient manuell mit statischer Verknüpfung kompiliert, wie in der Docker-Datei gezeigt.
Es wurde bestätigt, dass die kompilierte Binärdatei erfolgreich ausgeführt wird, mit Ausnahme dieses Datenbankverbindungsproblems.
Wie kann ich den Plugin-Fehler „caching_sha2_password“ beheben, wenn ich Diesel mit MySQL verwende und eine statisch verknüpfte Rust-Binärdatei erstellt habe? mit Mus? Gibt es eine Möglichkeit, die Kompatibilität mit MySQL 8.0 sicherzustellen, oder muss ich etwas an meinem Setup ändern, damit das Plugin funktioniert?
Jede Anleitung oder Anregung ist sehr willkommen!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post