PHP 7 соединяет mariadb с pam_auth, вызывает неизвестный метод аутентификации

Я бегу mariadb 10.2 в Ubuntu 16.04. Mariadb выполнит внешнюю аутентификацию, используя freeipa (ldap+kerberos). Я могу соединить сервер mariadb с клиентом mariadb, используя учетные данные freeipa. Все работает как обычно. /Etc/pam.d/mariadb, как показано ниже:

auth required pam_unix.so 
account required pam_unix.so 
auth required pam_user_map.so

Однако, когда я подключаюсь с помощью php7 mysqli (из командной строки или через Интернет), он возвращает:

(
    [affected_rows] => 
    [client_info] => 
    [client_version] => 50012
    [connect_errno] => 2054
    [connect_error] => The server requested authentication method unknown to the client
    [errno] => 
    [error] => 
    [error_list] => 
    [field_count] => 
    [host_info] => 
    [info] => 
    [insert_id] => 
    [server_info] => 
    [server_version] => 
    [stat] => 
    [sqlstate] => 
    [protocol_version] => 
    [thread_id] => 
    [warning_count] => 
)

Из многих исследований я заметил, что драйвер php mysql плохо поддерживает аутентификацию PAM. Есть онлайн-ресурсы http://www.sheeri.org/ldap-with-auth_pam-and-php/ рассказывается, что есть способ преодолеть его, но он слишком грубый. Может кто-нибудь сказать мне, как пересобрать для Ubuntu с libmariadbclient? Я не могу найти /usr/bin/mysql_config тем не мение. Спасибо

1 ответ

Я бы сильно упростил решение, я бы создал базовый скрипт bash для Ubuntu. Он будет использовать сервер / клиент apache2 / php / percona по умолчанию, переопределяя только mysqli.so, pdo_mysql.so.

https://gist.github.com/kstan79/367ef928e44523904fb36b67a92decdd

Другие вопросы по тегам