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