1

If I want to set up a mariadb a database and start mariadb as a local user:

I can easily override parameters such as --datadir=$HOME/mariadb/data or --error_log=$HOME/mariadb/log/mysql_error.log,
but I didn't find a straightforward way to have mariadb-install-db or mysqld to ignore the user = mysql setting that is set up in my system configuration files.

I'm running mariadb 10.5 on a ubuntu system, with standard system config files located in /etc/mysql/.

Note that this isn't really a blocking point, because I get warnings and both the install and the mysqld daemon apply their actions succesfully. It makes for scary warnings though:

$ mariadb-install-db --user=legec --datadir=$HOME/mariadb/data
chown: cannot access '/usr/lib/mysql/plugin/auth_pam_tool_dir/auth_pam_tool': Permission denied
chown: changing ownership of '/usr/lib/mysql/plugin/auth_pam_tool_dir': Operation not permitted
2023-12-14 17:51:57 0 [Warning] Ignoring user change to 'legec' because the user was set to 'mysql' earlier on the command line
2023-12-14 17:51:57 0 [Warning] Ignoring user change to 'legec' because the user was set to 'mysql' earlier on the command line
...

Consider joining MariaDB's strong and vibrant community:
https://mariadb.org/get-involved/

$ echo $?
0

On my system, the user = mysql setting is provided in file /etc/mysql/mariadb.conf.d/50-server.cnf,
if I remove that line and remove the --user=legec option from cli, the warning goes away.

Question

Is there a way to instruct mysqld and mariadb-install-db to run as local user and completely ignore any user setting ?
or override an option to state "I want to run as current user, ignore any user setting" ?

1 Answer 1

1

The straight forward way is to use --no-defaults.

mariadb-install-db --no-defaults  --datadir=$HOME/mariadb/data

With no --user setting it will use the current user as the installation user and not try to chown the auth_pam_tool helper.

--no-defaults, like all the --default* command line options must occur first in the command line.


To preserve existing settings:

my_print_defaults --mysqld | grep -Ev -- '--(user|datadir)' |
  xargs mariadb-install-db --no-defaults --datadir=$HOME/mariadb/data
2
  • you are right, I had actually tested that and it works. I was trying to find a way where I could keep the system defaults (character_set_server, collation_server, provider_lz4 ...) and just override the storage location -- and the running user obviously ?
    – LeGEC
    Commented Dec 15, 2023 at 5:04
  • updated to include this functionality.
    – danblack
    Commented Dec 15, 2023 at 5:35

Not the answer you're looking for? Browse other questions tagged or ask your own question.