[debian-mysql] Bug#962597: libmariadb3: Install caching_sha2_password.so

Tim Duesterhus public+debian.org at bastelstu.be
Wed Jun 10 15:44:55 BST 2020


Package: libmariadb3
Version: 1:10.3.22-0+deb10u1
Severity: wishlist
Tags: patch

Dear Maintainer,

   * What led up to the situation?

I want to use libmariadb3 via Perl to connect to a MySQL 8 server with
the caching_sha2_password enabled. According to the MariaDB knowledge
base this authentication plugin should be available:

https://mariadb.com/kb/en/authentication-plugin-sha-256/#client-authentication-plugins

Indeed I could verify that the source code of mariadb-10.3 as shipped
with Debian Buster contains the necessary code, however the necessary
caching_sha2_password.so file is missing from the libmariadb3 binary
package.

The sha256_password.so was removed with this commit:

https://salsa.debian.org/mariadb-team/mariadb-10.3/-/commit/21008f9fdfe0f13a360c61034ead65d3ae144606

Because it does not work when libmariadb3 is not linked against OpenSSL.
However this *does not* apply to caching_sha2_password.so which can also
link against GnuTLS.

   * What exactly did you do (or not do) that was effective (or
     ineffective)?

I built a custom libmariadb3 debian package that includes
caching_sha2_password.so and installed it on my system. To do so I
adjusted the debian/libmariadb3.install file within the source of the
package to include

usr/lib/*/mariadb19/plugin/caching_sha2_password.so

No other changes were required.

   * What was the outcome of this action?

My Perl script worked fine afterwards. See this shell transcript:

    $ ls -alh /usr/lib/x86_64-linux-gnu/mariadb19/plugin/
    total 128K
    drwxr-xr-x 2 root root 4.0K Jun 10 14:39 .
    drwxr-xr-x 3 root root 4.0K Jun 10 10:35 ..
    -rw-r--r-- 1 root root  14K Feb  2 13:33 caching_sha2_password.so.bak
    -rw-r--r-- 1 root root  69K Feb  2 13:33 client_ed25519.so
    -rw-r--r-- 1 root root  14K Feb  2 13:33 dialog.so
    -rw-r--r-- 1 root root  14K Feb  2 13:33 mysql_clear_password.so
    $ cat test.pl 
    use DBI;
    my $dbh = DBI->connect("DBI:mysql:information_schema;host=localhost;mysql_read_default_file=/root/default_file", "root", "");
    print($dbh->do("SELECT 1"));
    print("\n")
    $ cat default_file 
    [client]
    default-auth=caching_sha2_password
    
    [perl]
    default-auth=caching_sha2_password
    $ perl test.pl 
    DBI connect('information_schema;host=localhost;mysql_read_default_file=/root/default_file','root',...) failed: Got packets out of order at test.pl line 2.
    Can't call method "do" on an undefined value at test.pl line 3.
    $ mv /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so{.bak,}
    $ perl test.pl 
    1

After removing the `.bak` suffix from the .so file the script is able to
connect to the database and perform a query. Previously it was not.

   * What outcome did you expect instead?

That was the outcome I expected. However I did not expect that it would
be necessary to build my own libmariadb3 package.

Best regards
Tim Düsterhus

-- System Information:
Debian Release: 10.4
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-debug'), (500, 'stable'), (90, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.19.0-8-amd64 (SMP w/2 CPU cores)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to en_US.UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages libmariadb3 depends on:
ii  libc6           2.28-10
ii  libgnutls30     3.6.7-4+deb10u4
ii  mariadb-common  1:10.3.22-0+deb10u1
ii  zlib1g          1:1.2.11.dfsg-1

libmariadb3 recommends no packages.

libmariadb3 suggests no packages.

-- no debconf information


More information about the pkg-mysql-maint mailing list