MySQL where's the my.cnf path?

Solution 1:

As per this article:

Running this command from the command line / terminal will show where MySQL will look for the my.cnf file on Linux/BSD/OS X systems:

mysql --help | grep "Default options" -A 1 

This will output something like this:

Default options are read from the following files in the given order: 
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 

You can now check for files using the above output at /etc/my.cnf, then /etc/mysql/my.cnf and so on. If there isn't one at one of those locations, you can create one and know MySQL will use it.

Solution 2:

On a Linux system 'locate my.cnf" will be the fastest solution.

If there are several my.cnf files, all looking likely (e.g. in /etc, /etc/mysql, /opt/mysql/etc, etc.), then you can run strace to see where MySQL binary tries to find its configuration file, but I do think that's an overkill.

Solution 3:

OK a wild shot in the dark:

If the database is installed in /usr/local/mysql, then try looking in /etc/local for my.cnf

Here is how you can tell if you have a my.cnf

Run this query (<= 5.6.7)

SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME IN ('wait_timeout',
'innodb_buffer_pool_size','innodb_log_file_size');

OR (>= 5.6.8) it moved to the performance schema.

SELECT * FROM PERFORMANCE_SCHEMA.GLOBAL_VARIABLES
WHERE VARIABLE_NAME IN ('wait_timeout',
'innodb_buffer_pool_size','innodb_log_file_size');
SHOW GLOBAL VARIABLES LIKE 'wait_timeout';
SHOW GLOBAL VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW GLOBAL VARIABLES LIKE 'innodb_log_file_size';

If you should get:

  • wait_timeout 28800
  • innodb_log_file_size
    • Default Value (>= 5.6.8) 50331648
    • Default Value (<= 5.6.7) 5242880
  • innodb_buffer_pool_size 134217728

You are running with defaults and there is a possibility that there may not be a my.cnf present.

NOTE:

As of MySQL 5.7.6, information available from the tables described here is also available from the Performance Schema. The INFORMATION_SCHEMA tables are deprecated in preference to the Performance Schema tables and will be removed in a future MySQL release. For advice on migrating away from the INFORMATION_SCHEMA tables to the Performance Schema tables, see Section 25.20, “Migrating to Performance Schema System and Status Variable Tables”.

Solution 4:

How did you install MySQL and on what platform?

Brute force method on an unixoid OS:

find / -name my.cnf -print

Solution 5:

strace -fe open /etc/init.d/mysql start 2>&1|grep my.cnf should show you the system call used to open the file.