I build MariaDB from src.

I've been running v10.0.12 (r4252).  I've upgraded to v10.0.13 (r4346).

My build config always includes

        cmake ..  --debug-output \
                -DCMAKE_BUILD_TYPE="Release" \
                -DCMAKE_INSTALL_PREFIX=/usr/local/mariadb \
                -DINSTALL_LAYOUT=STANDALONE \
                -DINSTALL_SYSCONFDIR=/usr/local/etc/mariadb.DEFAULT \
                -DINSTALL_SYSCONF2DIR=/usr/local/etc/mariadb.DEFAULT/conf.d \
                -DDEFAULT_SYSCONFDIR=/usr/local/etc/mariadb \
                ...

I have always kept my config only in

        /usr/local/etc/mariadb/my.cnf

with no ~/.my.cnf in existence.

Launching MariaDB (via systemd) with

        /usr/local/mariadb/bin/mysqld 
--defaults-file=/usr/local/etc/mariadb/my.cnf --basedir=/usr/local/mariadb 
--datadir=/var/db/mariadb --plugin-dir=/usr/local/mariadb/lib/plugin 
--log-error=/var/log/mariadb/mariadb-err.log 
--pid-file=/var/cache/mariadb/mariadb.pid 
--socket=/var/cache/mariadb/mariadb.sock --port=3306

and noting

        cat ./scripts/CMakeLists.txt
                ...
                IF(INSTALL_SYSCONFDIR)
                  SET(sysconfdir ${DEFAULT_SYSCONFDIR})
                ELSE()
                  SET(sysconfdir "/etc")
                ENDIF()
                ...

& 
        cat ./mysys/my_default.c
                ...
                /* Which directories are searched for options (and in which 
order) */
                ...
                /*
                   This structure defines the context that we pass to callback
                   function 'handle_default_option' used in search_default_file
                   to process each option. This context is used if 
search_default_file
                   was called from load_defaults.
                */
                  
                struct handle_option_ctx
                ...
                /**
                  Create the list of default directories.

                  @param alloc  MEM_ROOT where the list of directories is stored

                  @details
                  The directories searched, in order, are:
                  - Windows:     GetSystemWindowsDirectory()
                  - Windows:     GetWindowsDirectory()
                  - Windows:     C:/
                  - Windows:     Directory above where the executable is located
                  - Unix:        /etc/ or the value of DEFAULT_SYSCONFDIR, if 
defined
                  - Unix:        /etc/mysql/ unless DEFAULT_SYSCONFDIR is 
defined
                  - ALL:         getenv("MYSQL_HOME")
                  - ALL:         --defaults-extra-file=<path> (run-time option)
                  - Unix:        ~/

                  On all systems, if a directory is already in the list, it 
will be moved
                  to the end of the list.  This avoids reading defaults files 
multiple times,
                  while ensuring the correct precedence.

                  @retval NULL  Failure (out of memory, probably)
                  @retval other Pointer to NULL-terminated array of default 
directories
                */
                ...

&

        @ 
https://mariadb.com/kb/en/mariadb/documentation/getting-started/configuring-mariadb-with-mycnf/

                On a Linux, Unix or Mac server, MariaDB looks for the my.cnf 
file in the following locations:

                Location            Scope
                /etc/my.cnf         Global
                /etc/mysql/my.cnf   Global
                SYSCONFDIR/my.cnf   Global
                $MYSQL_HOME/my.cnf  Server
                defaults-extra-file File specified with 
--defaults-extra-file=path, if any
                /.my.cnf            User

                    SYSCONFDIR is the directory specified with the CMake 
SYSCONFDIR option when MariaDB was built, by default etc under the compiled-in 
installation directory. 

with MariaDB v <= 10.0.12, changes to my config have always been correctly 
picked up, INCLUDING by all mysql client tools.

So, for example, if in my.cnf I add

        ...
        [client]
        user = root
        password = 'XXXXXX'
        ...

then at shell, instead of

        mysqlshow -u root -p
                password: XXXXXX

I can just

        mysqlshow

and the options as specified are picked up.

With MariaDB 10.0.13, the config file is ignored; no changes to it are picked 
up. The client apps still require cmd line "-u" & "-p", e.g.

        mysqlshow -u root -p

But if I simply

        cp -af /usr/local/etc/mariadb/my.cnf ~/.my.cnf

then, the changes are picked up -- from the ~/.my.cnf location.

and just

        mysqlshow

works, as previously.

Is this change in behavior intentional?  What't the correct, expected/intended 
behavior? If it's changed, how do I now specify and use the default config file 
location?

Grant

_______________________________________________
Mailing list: https://launchpad.net/~maria-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~maria-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to