Details
Description
From my original bug report http://bugs.mysql.com/73750
Description:
If no datadir is set via option files or command line the log location defaults to:
[...]
|
if (!defined($logdir))
|
{
|
$logdir= "/usr/share/mysql" if (-d "/usr/share/mysql" && -w "/usr/share/mysql");
|
}
|
[...]
|
(or whatever the "share" path is for the current installation) in the init_log() function inside the script
This is a very unexpected location, and AFAICT in violation with the linux file system standard (and Unix practice in general) as /usr should be considered read-only for everything but software installation actions (so that a read-only /usr file system can be shared between multiple installations)
How to repeat:
Check source of installed mysqld_multi script or just use mysqld_multi with --no-defaults or the exampe my.cnf given in the script itself, then see that you have a "mysqld_multi.log" file in the same directory that the error message translations, charset information, and files like mysql_system_tables.sql are in
(usually /usr/share/mysql or /usr/local/mysql/share ...) ... at least if the user executing mysqld_multi had sufficient permissions to write there ...
Suggested fix:
The default log location should be the default datadir, not pkgdatadir ...
Suggested fix:
=== modified file 'scripts/mysqld_multi.sh'
--- scripts/mysqld_multi.sh 2014-08-03 15:13:56 +0000
+++ scripts/mysqld_multi.sh 2014-08-28 08:59:17 +0000
@@ -246,7 +246,7 @@
}
if (!defined($logdir))
{
- $logdir= "@datadir@" if (-d "@datadir@" && -w "@datadir@");
+ $logdir= "@localstatedir@" if (-d "@localstatedir@" && -w "@localstatedir@");
}
if (!defined($logdir))
{