← Back to team overview

maria-developers team mailing list archive

Re: auth_socket/unix_socket auth plugin naming incompatibility with Percona Server

 

Hi, John!

On Feb 19, John Leach wrote:
> 
> I just tested a switch from Percona Server 5.6 to MariaDB 10.0.16 and
> hit a problem with socket authentication.
...
> Percona renamed it to auth_socket, matching the actual library filename
> auth_socket.so and MariaDB chose unix_socket, but keeping the filename
> auth_socket.so:
...
> This isn't great, but it's made worse because the plugin is successfully
> loaded in both cases (because the filename is auth_socket.so) and no
> errors are reported in the logs, but the plugin just exposes itself
> internally using a different name so reports that auth_socket isn't
> loaded in MariaDB.

How do you load the plugin? I suppose it's plugin-load=auth_socket.so
because plugin loads successfully even if the name is different?

> I fixed it by starting mysql with skip-grant-tables and running:
> 
> update mysql.user set plugin='unix_socket' where plugin='auth_socket';
> 
> but that alone doesn't work, because MariaDB doesn't know that
> unix_socket is provided by auth_socket.so:

No, that should've been sufficient. MariaDB knows that unix_socket is
provided by auth_socket.so when auth_socket.so is loaded.

If auth_socket.so is not loaded, neither MariaDB nor Percona Server will
know what plugin is in what .so file.

There must be something else you've done besides this update statement.

> Any thoughts on what to do here? Can the plugin be made to recognise
> both names, so other users don't end up in this situation? I presume
> there would need to be both auth_socket.so and unix_socket.so.

But .so name is the same both in MariaDB and in Percona Server.
It's always auth_socket.so, there is no unix_socket.so.

A plugin can not have two names, but technically it's possible to have
two plugins in the same .so file, they could share all the code and only
differ in names.

Regards,
Sergei


Follow ups

References