Кто не знает иностранных языков, тот не имеет понятия о своем собственном (И. Гёте).

Perl & MySQL 8.0

2 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
6 июня 2019
Как подключиться к MySQL из Perl с примером выбора записей
Если вы только что перешли на MySQL 8.0, вы, возможно, видели, что плагин аутентификации по умолчанию был изменен на более безопасный: caching_sha2_password.

Теперь давайте выясним, как пользователи Perl могут работать с MySQL 8.0.

Драйвер для использования MySQL с Perl – perl-DBD-MySQL . MySQL 8.0 поддерживается, но новый плагин аутентификации может отсутствовать. Это зависит от библиотеки mysql, связанной во время компиляции модуля.

 

Проблема с подключением к MySQL 8.0

Ошибка, с которой вы можете столкнуться, заключается в следующем:

DBI connect('host=localhost','fred',...) failed: Authentication plugin
 'caching_sha2_password' cannot be loaded: 
/usr/lib64/mysql/plugin/caching_sha2_password.so: 
cannot open shared object file: No such file or directory at ./perl_example.pl line 8.

 

Поэтому, если вы столкнулись с этой проблемой при использовании perl-DBD-MySQL для подключения к MySQL 8.0, у вас должен быть драйвер, который еще не поддерживает новый плагин. Если это так, самым быстрым, простым, но не самым безопасным решением является использование более старого плагина аутентификации: mysql_native_password.

 

mysql_native_password

Чтобы проверить, какой плагин аутентификации использует пользователь, вы можете выполнить следующий запрос:

mysql> select user, plugin from mysql.user where user='fred';
+------+-----------------------+
| user | plugin                |
+------+-----------------------+
| fred | caching_sha2_password |
+------+-----------------------+

 

Вы можете видеть, что это новый, используемый в MySQL 8.0. Давайте изменим его:

mysql> alter user 'fred' identified 
       with 'mysql_native_password' by 'mysecurepasswd';

 

Обратите внимание, что вам нужно установить пароль.

Пожалуйста, не изменяйте вручную таблицу mysq.user с помощью оператора update.

 

caching_sha2_password

Если вы хотите использовать новый безопасный механизм аутентификации, вам нужно проверить, связан ли ваш модуль perl-DBD-MySQL с библиотекой, которая его поддерживает:

$ ldd /usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so | grep  'mysql\|maria'
libmysqlclient.so.18 => /usr/lib64/mysql/libmysqlclient.so.18 (0x00007f0f632ee000)

 

Эта версия ( libmysqlclient.so.18) не поддерживает новый плагин аутентификации. Вам нужно иметь хотя бы libmysqlclient.so.21 или libmariadb.so.3.

По умолчанию в CentOS/RHEL/OL 7 perl-DBD-MySQL связан со старой версией mariadb-libs(5.5) или с использованием mysql-community-libs-compat (особенно если вы обновились до 8.0.x).

В последней версии Fedora это не так:

$ ldd /usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so | grep  'mysql\|maria'
libmariadb.so.3 => /lib64/libmariadb.so.3 (0x00007fecbc8b6000)

 

Эта библиотека установлена ​​затем, что mariadb-connector-c-3.0.10 поддерживает новый механизм аутентификации MySQL 8.0.

Заключение

MySQL 8.0 становится все более и более популярным, и даже другие коннекторы, чем родные, теперь поддерживают его. Конечно, если вы хотите использовать его в одной системе, в которой еще не используются последние версии, вам нужно иметь последние библиотеки, но это не очень сложно.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 9

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

    Добавить комментарий

    Войти с помощью: 

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам:

    Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

    badge
    Обратный звонок 1
    Отправить
    galka

    Спасибо! Ваша заявка принята

    close
    galka

    Спасибо! Ваша заявка принята

    close