[MDEV-8607] [PATCH] Init script doesn't check all applicable configuration groups Created: 2015-08-12  Updated: 2015-12-08  Resolved: 2015-12-08

Status: Closed
Project: MariaDB Server
Component/s: Scripts & Clients
Affects Version/s: 5.5.45, 10.0.21, 10.1.6
Fix Version/s: 5.5.47, 10.0.23, 10.1.10

Type: Bug Priority: Major
Reporter: Geoff Montee (Inactive) Assignee: Sergei Golubchik
Resolution: Fixed Votes: 0
Labels: None


 Description   

The mysql.server init script doesn't check all server configuration groups. This happens because it uses the following arguments to "my_print_defaults":

/usr/bin/my_print_defaults mysqld server mysql_server mysql.server

See here: https://github.com/MariaDB/server/blob/2db62f686e148f09fe5fd0b385fc71f2a3c4a133/support-files/mysql.server.sh#L213

This causes a problem because the mysql.server script needs to use some of the server configuration options, such as datadir.

For example, let's say we have the following configuration file:

$ cat /etc/my.cnf.d/server.cnf
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#
 
# this is read by the standalone daemon and embedded servers
[server]
 
# this is only for the mysqld standalone daemon
[mysqld]
 
# this is only for embedded server
[embedded]
 
# This group is only read by MariaDB servers, not by MySQL.
# If you use the same .cnf file for MySQL and MariaDB,
# you can put MariaDB-only options here
[mariadb]
 
# This group is only read by MariaDB-10.0 servers.
# If you use the same .cnf file for MariaDB of different versions,
# use this group for options that older servers don't understand
[mariadb-10.0]
log_bin
binlog_format=ROW
server_id=1
skip_name_resolve
datadir=/exports/mysql

What does my_print_defaults give us with the arguments that mysql.server uses? Nothing, because it doesn't check the mariadb-10.0 configuration group:

$ /usr/bin/my_print_defaults  mysqld server mysql_server mysql.server

If we instead use the --mysqld argument, then it finds the correct settings:

$ /usr/bin/my_print_defaults  --mysqld
--log_bin
--binlog_format=ROW
--server_id=1
--skip_name_resolve
--datadir=/exports/mysql

A side-effect of this bug is that you can't set datadir in the mariadb-10.0 configuration group.

$ /usr/bin/my_print_defaults  --mysqld | grep "datadir"
--datadir=/exports/mysql
$ sudo service mysql start
Starting MySQL. SUCCESS!
$ mysql -u root --execute="SHOW GLOBAL VARIABLES LIKE 'datadir'"
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+



 Comments   
Comment by Geoff Montee (Inactive) [ 2015-08-12 ]

Pull request for 5.5 is here: https://github.com/MariaDB/server/pull/92

Generated at Thu Feb 08 07:28:25 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.