Плагин caching_sha2_password не удалось загрузить в Rust Diesel с MySQL с помощью Musl?MySql

Форум по Mysql
Ответить
Anonymous
 Плагин caching_sha2_password не удалось загрузить в Rust Diesel с MySQL с помощью Musl?

Сообщение Anonymous »

Я работаю над приложением Rust, созданным с использованием musl, чтобы создать статически связанный двоичный файл для небольшого образа Docker. Мне удалось вручную перекомпилировать библиотеку mysqlclient для musl, и я подумал, что все настроено правильно.
Однако при попытке подключения к MySQL 8.0< /code>, я столкнулся со следующей ошибкой:

Код: Выделить всё

kubeye-gateway     | thread 'main' panicked at src/db/setup.rs:25:10:
kubeye-gateway     | Failed to create DB Pool: Error(Some("Plugin caching_sha2_password could not be loaded: Dynamic loading not supported"))
kubeye-gateway     | note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Я использую Diesel ORM с серверной частью MySQL в своем приложении на Rust.
Dockerfile для приложения использует musl для статического связывания. Вот соответствующая часть моего Dockerfile:

Код: Выделить всё

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
...
По всей видимости, ошибка связана с плагином MySQL caching_sha2_password, который является механизмом аутентификации по умолчанию для MySQL 8.0. Я подозреваю, что проблема возникает из-за того, что динамическая загрузка не поддерживается из-за статического связывания с musl.
Я вручную скомпилировал mariadbclient со статическим связыванием, как показано в Dockerfile.
Проверено, что скомпилированный двоичный файл работает успешно, за исключением этой проблемы с подключением к базе данных.
Как устранить ошибку плагина caching_sha2_password при использовании Diesel с MySQL и статически связанном двоичном файле Rust с муслом? Есть ли способ обеспечить совместимость с MySQL 8.0 или мне нужно что-то изменить в настройках, чтобы плагин работал?
Любые рекомендации и предложения приветствуются!

Подробнее здесь: https://stackoverflow.com/questions/793 ... ysql-using
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»