Problem
The mariadb_server role cannot provision users that use modern MariaDB authentication plugins such as ed25519. As a workaround, admins have to run statements like the following manually after the role finishes:
ALTER USER 'icingaweb2_user'@'localhost' IDENTIFIED VIA ed25519 USING PASSWORD('<replace-with-strong-password>');
This defeats the purpose of managing users declaratively via Ansible.
Root Cause
roles/mariadb_server/tasks/main.yml:736-747 calls community.mysql.mysql_user for mariadb_server__users__* and passes password: together with an optional plugin:, but never plugin_auth_string / plugin_hash_string. For plugins like ed25519 this combination does not produce a usable login (the plaintext password: is not interpreted as the ed25519 secret).
roles/mariadb_server/tasks/create-dba.yml:4-13 (admin user) and roles/mariadb_server/tasks/main.yml:634-643 (dump user) do not expose a plugin parameter at all and are therefore pinned to the server's default plugin (in practice mysql_native_password).
- The default config templates (
templates/etc/my.cnf.d/*-z00-linuxfabrik.cnf.j2 and vars/*.yml) only pre-load server_audit and file_key_management via plugin_load_add; server_ed25519 is never loaded, so users defined with plugin: ed25519 would fail server-side anyway unless the admin sets mariadb_server__cnf_plugin_load_add__* by hand.
README.md:381-384 documents plugin: only as a generic string with no working ed25519 example.
Expected Behavior
The role should be able to create MariaDB users that authenticate via modern plugins (in particular ed25519) without any manual ALTER USER follow-up.
Proposed Changes
Acceptance Criteria
- A user defined in
mariadb_server__users__* (and analogously mariadb_server__admin_user / mariadb_server__dump_user) with plugin: ed25519 is created such that SELECT user, host, plugin FROM mysql.global_priv; shows ed25519 and login with the configured password works, without any manual ALTER USER.
- Existing inventories that do not set
plugin: keep working (no breaking change).
- README documents the new behavior with at least one full example.
References
Problem
The
mariadb_serverrole cannot provision users that use modern MariaDB authentication plugins such ased25519. As a workaround, admins have to run statements like the following manually after the role finishes:This defeats the purpose of managing users declaratively via Ansible.
Root Cause
roles/mariadb_server/tasks/main.yml:736-747callscommunity.mysql.mysql_userformariadb_server__users__*and passespassword:together with an optionalplugin:, but neverplugin_auth_string/plugin_hash_string. For plugins likeed25519this combination does not produce a usable login (the plaintextpassword:is not interpreted as the ed25519 secret).roles/mariadb_server/tasks/create-dba.yml:4-13(admin user) androles/mariadb_server/tasks/main.yml:634-643(dump user) do not expose apluginparameter at all and are therefore pinned to the server's default plugin (in practicemysql_native_password).templates/etc/my.cnf.d/*-z00-linuxfabrik.cnf.j2andvars/*.yml) only pre-loadserver_auditandfile_key_managementviaplugin_load_add;server_ed25519is never loaded, so users defined withplugin: ed25519would fail server-side anyway unless the admin setsmariadb_server__cnf_plugin_load_add__*by hand.README.md:381-384documentsplugin:only as a generic string with no working ed25519 example.Expected Behavior
The role should be able to create MariaDB users that authenticate via modern plugins (in particular
ed25519) without any manualALTER USERfollow-up.Proposed Changes
roles/mariadb_server/tasks/main.yml:plugin_auth_string/plugin_hash_stringso thatcommunity.mysql.mysql_usercan install ed25519 credentials correctlymariadb_server__admin_user(create-dba.yml) andmariadb_server__dump_user, so they too can be provisioned with a non-legacy pluginplugin loading:
server_ed25519is loaded on the server side when any user requestsplugin: ed25519, either by extending the defaultplugin_load_addintemplates/etc/my.cnf.d/*-z00-linuxfabrik.cnf.j2/vars/*.yml, or by clearly documenting the requirement on the inventory sideroles/mariadb_server/README.md:ed25519user (admin, dump, regular)ed25519Acceptance Criteria
mariadb_server__users__*(and analogouslymariadb_server__admin_user/mariadb_server__dump_user) withplugin: ed25519is created such thatSELECT user, host, plugin FROM mysql.global_priv;showsed25519and login with the configured password works, without any manualALTER USER.plugin:keep working (no breaking change).References
community.mysql.mysql_usermodule:plugin,plugin_auth_string,plugin_hash_string