MYSQLを暫くアップグレードしていなかったので、
BugFix含めて対応する事にした。

既存の環境を確認
[root@colinux local]$ ls -l | grep mysql
lrwxrwxrwx 1 root root 38 2009-12-26 01:40 mysql -> mysql-5.5.0-m2-linux-i686-icc-glibc23/
drwxr-xr-x 14 mysql mysql 4096 2009-12-22 00:23 mysql-5.1.41-linux-i686-icc-glibc23
drwxr-xr-x 14 mysql mysql 4096 2009-12-26 01:37 mysql-5.5.0-m2-linux-i686-icc-glibc23
[root@colinux local]$

古いバージョンはもう1年以上利用していないので削除。(2世代前のファイル)
[root@colinux local]# rm -rf mysql-5.1.41-linux-i686-icc-glibc23/

ディスクスペースが空いたので最新のMYSQL GAバージョンをダウンロード
http://dev.mysql.com/downloads/mysql/5.5.html#downloads

32bit (mysql-5.5.25-linux2.6-i686.tar.gz)
http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-i686.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-i686.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/

64bit(mysql-5.5.25-linux2.6-x86_64.tar.gz)
http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-x86_64.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-x86_64.tar.gz/from/http://ftp.jaist.ac.jp/pub/mysql/

wgetに-Oでファイル名指定しないと、index.htmlでダウンロードしてしまうのでファイル名をオプションで指定。

[root@colinux src]# wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-i686.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/ -O mysql-5.5.25-linux2.6-i686.tar.gz
–2012-06-23 07:11:41– http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-i686.tar.gz/from/http://ftp.iij.ad.jp/pub/db/mysql/
dev.mysql.com をDNSに問いあわせています… 156.151.63.11
dev.mysql.com|156.151.63.11|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 302 Found
場所: http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-i686.tar.gz [続く]
–2012-06-23 07:11:42– http://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-5.5/mysql-5.5.25-linux2.6-i686.tar.gz
ftp.iij.ad.jp をDNSに問いあわせています… 202.232.140.141, 202.232.140.135, 202.232.140.136, …
ftp.iij.ad.jp|202.232.140.141|:80 に接続しています… 接続しました。
HTTP による接続要求を送信しました、応答を待っています… 200 OK
長さ: 179403866 (171M) [application/x-gzip]
`mysql-5.5.25-linux2.6-i686.tar.gz’ に保存中

100%[=============================================================================================================================>] 179,403,866 2.64M/s 時間 72s

2012-06-23 07:12:54 (2.38 MB/s) – `mysql-5.5.25-linux2.6-i686.tar.gz’ へ保存完了 [179403866/179403866]

[root@colinux src]#

[root@colinux src]# ls -lh
合計 216M
-rw-r–r– 1 root root 123K 2009-04-14 11:40 DBD-mysql-4.011.tar.gz
-rw-r–r– 1 root root 499K 2009-06-08 19:29 DBI-1.609.tar.gz
-rw-r–r– 1 root root 44M 2010-12-07 18:51 MySQL-embedded-5.5.8-1.linux2.6.i386.rpm
-rwxrwxr-x 1 root mysql 2.7K 2010-04-27 00:10 my.cnf.20110109
-rw-r–r– 1 root root 172M 2012-05-15 22:16 mysql-5.5.25-linux2.6-i686.tar.gz

ダウンロードしたtarを展開して、任意のフォルダーに移動して利用。

[root@colinux src]# tar zxvf mysql-5.5.25-linux2.6-i686.tar.gz
[省略]
mysql-5.5.25-linux2.6-i686/INSTALL-BINARY
mysql-5.5.25-linux2.6-i686/README
mysql-5.5.25-linux2.6-i686/data/test/.empty
mysql-5.5.25-linux2.6-i686/data/mysql/.empty
mysql-5.5.25-linux2.6-i686/COPYING
[root@colinux src]#

[root@colinux src]# ls -l
合計 221008
-rw-r–r– 1 root root 125653 2009-04-14 11:40 DBD-mysql-4.011.tar.gz
-rw-r–r– 1 root root 510309 2009-06-08 19:29 DBI-1.609.tar.gz
-rw-r–r– 1 root root 46019462 2010-12-07 18:51 MySQL-embedded-5.5.8-1.linux2.6.i386.rpm
-rwxrwxr-x 1 root mysql 2714 2010-04-27 00:10 my.cnf.20110109
drwxr-xr-x 13 root root 4096 2012-06-23 07:15 mysql-5.5.25-linux2.6-i686
-rw-r–r– 1 root root 179403866 2012-05-15 22:16 mysql-5.5.25-linux2.6-i686.tar.gz
[root@colinux src]#

[root@colinux src]# mv mysql-5.5.25-linux2.6-i686 /usr/local/
[root@colinux src]#

[root@colinux local]# pwd
/usr/local
[root@colinux local]# ls -l | grep mysql
lrwxrwxrwx 1 root root 38 2009-12-26 01:40 mysql -> c-m2-linux-i686-icc-glibc23/
drwxr-xr-x 14 mysql mysql 4096 2009-12-26 01:37 mysql-5.5.0-m2-linux-i686-icc-glibc23
drwxr-xr-x 13 root root 4096 2012-06-23 07:15 mysql-5.5.25-linux2.6-i686
[root@colinux local]#

MYSQLを停止してシンボリックリンクを削除する前にMYSQLにログインしてバージョンを再確認。

mysql version confirmation


1.確認が終わったので、MYSQLを停止してシンボリックリンク削除と再作成
2.データファイルのコピー(古いDATAフォルダーを新しいDATAフォルダーへ)

※失敗した場合も古いバージョンにシンボリックリンクの変更のみでロールバック出来るので楽です。

既存MYSQLの停止
[root@colinux local]# /etc/init.d/mysql.server stop
Shutting down MySQL.. SUCCESS!
[root@colinux local]#

[root@colinux local]# ls -l | grep mysql
lrwxrwxrwx 1 root root 38 2009-12-26 01:40 mysql -> mysql-5.5.0-m2-linux-i686-icc-glibc23/
drwxr-xr-x 14 mysql mysql 4096 2009-12-26 01:37 mysql-5.5.0-m2-linux-i686-icc-glibc23
drwxr-xr-x 13 root root 4096 2012-06-23 07:15 mysql-5.5.25-linux2.6-i686
[root@colinux local]#

シンボリックリンクの削除
[root@colinux local]# rm -rf mysql
[root@colinux local]# ls -l | grep mysql
drwxr-xr-x 14 mysql mysql 4096 2009-12-26 01:37 mysql-5.5.0-m2-linux-i686-icc-glibc23
drwxr-xr-x 13 root root 4096 2012-06-23 07:15 mysql-5.5.25-linux2.6-i686
[root@colinux local]#

MYSQLを停止したので、データファイルを新しいバージョンにコピー
[root@colinux local]# ls -l mysql-5.5.0-m2-linux-i686-icc-glibc23/data/ | wc -l
47
[root@colinux local]# ls -l mysql-5.5.25-linux2.6-i686/data/ | wc -l
3
[root@colinux local]#

データを移動したのでファイル数の確認
[root@colinux local]# mv -f mysql-5.5.0-m2-linux-i686-icc-glibc23/data mysql-5.5.25-linux2.6-i686/
[root@colinux local]# ls -l mysql-5.5.25-linux2.6-i686/data/ | wc -l
47
[root@colinux local]#

※mvコマンドだとバックアップが無くなってしまうので、cpコマンドでコピーする方が良い。
今回はmvしてしまったので、バージョンアップする前にコピーしておきました。
ロールバックもシンボリックリンク変更して起動するだけなので楽です。
———————————————————————————-
[root@colinux bin]# cp -rp /usr/local/mysql-5.5.25-linux2.6-i686/data /usr/local/mysql-5.5.0-m2-linux-i686-icc-glibc23/
[root@colinux bin]#
———————————————————————————-

移動し終わったので、新しいバージョンでシンボリックリンクの作成。
[root@colinux local]# ln -s mysql-5.5.25-linux2.6-i686/ mysql
[root@colinux local]# ls -l | grep mysql
lrwxrwxrwx 1 root root 27 2012-06-23 07:26 mysql -> mysql-5.5.25-linux2.6-i686/
drwxr-xr-x 13 mysql mysql 4096 2012-06-23 07:25 mysql-5.5.0-m2-linux-i686-icc-glibc23
drwxr-xr-x 13 root root 4096 2012-06-23 07:25 mysql-5.5.25-linux2.6-i686
[root@colinux local]#

フォルダーをMYSQLユーザが変更出来るようにオーナーを変更。
[root@colinux local]# ls -l | grep mysql
lrwxrwxrwx 1 root root 27 2012-06-23 07:26 mysql -> mysql-5.5.25-linux2.6-i686/
drwxr-xr-x 13 mysql mysql 4096 2012-06-23 07:25 mysql-5.5.0-m2-linux-i686-icc-glibc23
drwxr-xr-x 13 root root 4096 2012-06-23 07:25 mysql-5.5.25-linux2.6-i686
[root@colinux local]# chown -R mysql:mysql mysql-5.5.25-linux2.6-i686/
[root@colinux local]# ls -l | grep mysql
lrwxrwxrwx 1 root root 27 2012-06-23 07:26 mysql -> mysql-5.5.25-linux2.6-i686/
drwxr-xr-x 13 mysql mysql 4096 2012-06-23 07:25 mysql-5.5.0-m2-linux-i686-icc-glibc23
drwxr-xr-x 13 mysql mysql 4096 2012-06-23 07:25 mysql-5.5.25-linux2.6-i686
[root@colinux local]#

フォルダー権限、シンボリックリンク、データコピーが終わったので起動してみる。

[root@colinux data]# /etc/init.d/mysql.server start
Starting MySQL.. ERROR! Manager of pid-file quit without updating file.
[root@colinux data]#
案の定エラーになった。
毎度の事だが、MYSQLのバージョンアップに伴いオプションが変わっているかと。

先ずは、エラーログを確認して以下のエラーから対応
——————————————————————————
120623 08:06:12 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
/usr/local/mysql/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
120623 08:06:12 mysqld_safe mysqld from pid file /usr/local/mysql/data/colinux.pid ended
——————————————————————————
[root@colinux data]# yum install libaio-devel -y
fedora 100% |=========================| 2.1 kB 00:00
updates 100% |=========================| 2.3 kB 00:00
Setting up Install Process
Parsing package install arguments

libaio-devel

再度サービス起動したが、エラーが残っていて起動しない。
[root@colinux data]# /etc/init.d/mysql.server start
my.confが新しいバージョンに対応していないようなので調整してみる。

——————————————————————————–
120623 08:08:24 mysqld_safe mysqld from pid file /usr/local/mysql/data/colinux.pid ended
120623 08:11:04 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
120623 8:11:05 [Note] Plugin ‘FEDERATED’ is disabled.
120623 8:11:05 InnoDB: The InnoDB memory heap is disabled
120623 8:11:05 InnoDB: Mutexes and rw_locks use InnoDB’s own implementation
120623 8:11:05 InnoDB: Compressed tables use zlib 1.2.3
120623 8:11:05 InnoDB: Using Linux native AIO
120623 8:11:06 InnoDB: Error: Linux Native AIO is not supported on tmpdir.
InnoDB: You can either move tmpdir to a file system that supports native AIO
InnoDB: or you can set innodb_use_native_aio to FALSE to avoid this message.
120623 8:11:06 InnoDB: Error: Linux Native AIO check on tmpdir returned error[22]
120623 8:11:06 InnoDB: Warning: Linux Native AIO disabled.
120623 8:11:06 InnoDB: Initializing buffer pool, size = 16.0M
120623 8:11:06 InnoDB: Completed initialization of buffer pool
120623 8:11:06 InnoDB: highest supported file format is Barracuda.
120623 8:11:07 InnoDB: Warning: allocated tablespace 17, old maximum was 0
InnoDB: 127 rollback segment(s) active.
120623 8:11:07 InnoDB: Waiting for the background threads to start
120623 8:11:08 InnoDB: 1.1.8 started; log sequence number 33765719
120623 8:11:08 [ERROR] /usr/local/mysql/bin/mysqld: unknown option ‘–skip-locking’
120623 8:11:08 [ERROR] Aborting

120623 8:11:08 InnoDB: Starting shutdown…
120623 8:11:09 InnoDB: Shutdown completed; log sequence number 35322070
120623 8:11:09 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

120623 08:11:09 mysqld_safe mysqld from pid file /usr/local/mysql/data/colinux.pid ended
[root@colinux data]#
——————————————————————————–

my.confを編集する前に、念の為バックアップ
[root@colinux data]# cp -p /etc/my.cnf /etc/my.cnf.old.20120623

こちらのオプションをコメントする。
——————————————————————————–
120623 8:11:08 [ERROR] /usr/local/mysql/bin/mysqld: unknown option ‘–skip-locking’
120623 8:11:08 [ERROR] Aborting
——————————————————————————–
[root@colinux data]# vi /etc/my.cnf
# Comment skip-locking at version up to 5.5.25
#skip-locking

こちらの文字コードの設定も設定の仕方が、character-set-serverに変わっているので変更。
——————————————————————————–
120623 8:22:00 [ERROR] /usr/local/mysql/bin/mysqld: unknown variable ‘default-character-set=utf8’
120623 8:22:00 [ERROR] Aborting
——————————————————————————–
[root@colinux data]# vi /etc/my.cnf
# Comment skip-locking at version up to 5.5.25
#default-character-set=utf8
character-set-server=utf8

my.cnfの編集が終わったので起動してみる。
[root@colinux data]# /etc/init.d/mysql.server start
Starting MySQL…. SUCCESS!
[root@colinux data]#

起動したので、先ずはMYSQLのシステムテーブルをアップグレード。

[root@colinux data]# /usr/local/mysql/bin/mysql_upgrade -u root -p
Enter password:
Looking for ‘mysql’ as: /usr/local/mysql/bin/mysql
Looking for ‘mysqlcheck’ as: /usr/local/mysql/bin/mysqlcheck
Running ‘mysqlcheck’ with connection arguments: ‘–port=3306’ ‘–socket=/tmp/mysql.sock’
Running ‘mysqlcheck’ with connection arguments: ‘–port=3306’ ‘–socket=/tmp/mysql.sock’
DB01.TABLE000 OK
DB01.TABLE007 OK
DB01.TABLE008 OK
DB01.TABLE009 OK
DB01.TABLE100 OK
DB01.TABLE101 OK
DB01.TABLE911 OK
DB01.TABLE_FILEPATH OK
DB01.TABLE_FILEPATH2 OK
DB01.T_FULLTEXT OK
DB02.animals OK
DB02.animals02 OK
DB02.animals03 OK

[省略]

mysql.time_zone_leap_second OK
mysql.time_zone_name OK
mysql.time_zone_transition OK
mysql.time_zone_transition_type OK
mysql.user OK
mysql.user_info OK
Running ‘mysql_fix_privilege_tables’…
OK
[root@colinux data]#

システムテーブルのアップグレードが問題無く終わったので念の為再起動

[root@colinux data]# /etc/init.d/mysql.server restart
Shutting down MySQL. SUCCESS!
Starting MySQL…. SUCCESS!
[root@colinux data]#

エラーログの確認してみると、”Native AIO is not supported on tmpdir”というログがある。
——————————————————————————
Version: ‘5.5.25-log’ socket: ‘/tmp/mysql.sock’ port: 3306 MySQL Community Server (GPL)
120623 8:52:55 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown
120623 8:52:55 [Note] Event Scheduler: Purging the queue. 0 events
120623 8:52:55 InnoDB: Starting shutdown…
120623 8:52:56 InnoDB: Shutdown completed; log sequence number 35322070
120623 8:52:56 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
120623 08:52:56 mysqld_safe mysqld from pid file /usr/local/mysql/data/colinux.pid ended
120623 08:52:58 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
120623 8:52:58 [Note] Plugin ‘FEDERATED’ is disabled.
120623 8:52:58 InnoDB: The InnoDB memory heap is disabled
120623 8:52:58 InnoDB: Mutexes and rw_locks use InnoDB’s own implementation
120623 8:52:58 InnoDB: Compressed tables use zlib 1.2.3
120623 8:52:58 InnoDB: Using Linux native AIO
120623 8:52:58 InnoDB: Error: Linux Native AIO is not supported on tmpdir.
InnoDB: You can either move tmpdir to a file system that supports native AIO
InnoDB: or you can set innodb_use_native_aio to FALSE to avoid this message.
120623 8:52:58 InnoDB: Error: Linux Native AIO check on tmpdir returned error[22]
120623 8:52:58 InnoDB: Warning: Linux Native AIO disabled.
120623 8:52:58 InnoDB: Initializing buffer pool, size = 16.0M
120623 8:52:58 InnoDB: Completed initialization of buffer pool
120623 8:52:59 InnoDB: highest supported file format is Barracuda.
120623 8:52:59 InnoDB: Warning: allocated tablespace 17, old maximum was 0
120623 8:52:59 InnoDB: Waiting for the background threads to start
120623 8:53:00 InnoDB: 1.1.8 started; log sequence number 35322070
120623 8:53:00 [Note] Server hostname (bind-address): ‘0.0.0.0’; port: 3306
120623 8:53:00 [Note] – ‘0.0.0.0’ resolves to ‘0.0.0.0’;
120623 8:53:00 [Note] Server socket created on IP: ‘0.0.0.0’.
120623 8:53:00 [Note] Event Scheduler: Loaded 0 events
120623 8:53:00 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: ‘5.5.25-log’ socket: ‘/tmp/mysql.sock’ port: 3306 MySQL Community Server (GPL)
[root@colinux data]#
——————————————————————————


以下のエラーが出ているので、tempファイルシステムを移動してみる。
現状は、/usr/local/tmpに設定しているの/tmpに変更してみる。

—————————————————————————–
120623 8:52:58 InnoDB: Error: Linux Native AIO is not supported on tmpdir.
InnoDB: You can either move tmpdir to a file system that supports native AIO
—————————————————————————–
[root@colinux mysql]# vi /etc/my.cnf
# Comment skip-locking at version up to 5.5.25
# tmpdir
# tmpdir=/usr/local/tmp
tmpdir=/tmp

fstabの内容は以下のような感じにしてました。
[root@colinux data]# cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
#LABEL=/ / ext3 defaults,noatime 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
#LABEL=swap none swap defaults 0 0
/dev/cobd1 none swap defaults 0 0
#additional temp fs
/dev/shm /usr/local/tmp tmpfs defaults,size=32m 0 0
[root@colinux data]#

変更したので、再度MYSQLを再起動してみる。

[root@colinux mysql]# /etc/init.d/mysql.server restart
Shutting down MySQL. SUCCESS!
Starting MySQL…. SUCCESS!
[root@colinux mysql]#

ログを確認してみてエラーが解消されたか確認。

—————————————————————————-
MYSQLのログからエラーが消えた事を確認。
—————————————————————————-
120623 9:03:00 [Note] /usr/local/mysql/bin/mysqld: Normal shutdown
120623 9:03:00 [Note] Event Scheduler: Purging the queue. 0 events
120623 9:03:00 InnoDB: Starting shutdown…
120623 9:03:00 InnoDB: Shutdown completed; log sequence number 35322070
120623 9:03:00 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete
120623 09:03:01 mysqld_safe mysqld from pid file /usr/local/mysql/data/colinux.pid ended
120623 09:03:02 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
120623 9:03:02 [Note] Plugin ‘FEDERATED’ is disabled.
120623 9:03:02 InnoDB: The InnoDB memory heap is disabled
120623 9:03:02 InnoDB: Mutexes and rw_locks use InnoDB’s own implementation
120623 9:03:02 InnoDB: Compressed tables use zlib 1.2.3
120623 9:03:02 InnoDB: Using Linux native AIO
120623 9:03:03 InnoDB: Initializing buffer pool, size = 16.0M
120623 9:03:03 InnoDB: Completed initialization of buffer pool
120623 9:03:03 InnoDB: highest supported file format is Barracuda.
120623 9:03:03 InnoDB: Warning: allocated tablespace 17, old maximum was 0
120623 9:03:03 InnoDB: Waiting for the background threads to start
120623 9:03:04 InnoDB: 1.1.8 started; log sequence number 35322070
120623 9:03:05 [Note] Server hostname (bind-address): ‘0.0.0.0’; port: 3306
120623 9:03:05 [Note] – ‘0.0.0.0’ resolves to ‘0.0.0.0’;
120623 9:03:05 [Note] Server socket created on IP: ‘0.0.0.0’.
120623 9:03:05 [Note] Event Scheduler: Loaded 0 events
120623 9:03:05 [Note] /usr/local/mysql/bin/mysqld: ready for connections.
Version: ‘5.5.25-log’ socket: ‘/tmp/mysql.sock’ port: 3306 MySQL Community Server (GPL)
[root@colinux data]#
—————————————————————————-

エラーが解消されたので、ログインしてバージョンを確認してみる。
いつの間にか、コピーライトが”Copyright (c) 2000, 2011, Oracle and/or its affiliates.”
になっていますね。

[root@colinux data]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.25-log MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

mysql> select @@version;
+————+
| @@version |
+————+
| 5.5.25-log |
+————+
1 row in set (0.01 sec)

バージョンも無事に更新されてました。

my.cnfでオプション変更したが、文字コードもきちんとUTF-8でした。
文字コード

以上でMYSQLのバージョンアップ完了。


MYSQLのオプションファイル(設定ファイル)は複数存在する場合があります。
複数の設定ファイルが存在した場合、後ろで定義したオプションの方が前で定義した
同一オプションより優先されます。

コマンドラインオプションは全ての設定ファイルよりも優先されます。

Windows
Windows上のMySQL Serverは、以下の表にリストされている設定ファイルを、リストの上から順に読み込みます。
同じ設定が複数の設定ファイルに記述されている場合は、最後に読み込まれた設定が有効になります。
=====================================================
ファイル名 目的
=====================================================
WINDIR\my.ini グローバルオプション
C:\my.cnf グローバルオプション
INSTALLDIR\my.ini グローバルオプション
defaults-extra-file --defaults-extra-file=pathで指定されたファイル(あれば)

WINDIR ユーザのWindowsディレクトリの場所を表しています。一般的に、C:\WINDOWS もしくは C:\WINNTになります。以下のコマンドを使用して WINDIR 環境変数の値から正確なロケーションを割り出すことができます。

Unix or Linux
Unix系のプラットフォーム上のMySQL Serverは、以下の設定ファイルを表の上にリストされている順に読み込みます。
同じ設定が複数の設定ファイルに記述されている場合は、最後に読み込まれた設定が有効になります。
=====================================================
ファイル名 目的
=====================================================
/etc/my.cnf グローバルオプション
$MYSQL_HOME/my.cnf サーバ固有のオプション
defaults-extra-file --defaults-extra-file=pathで指定されたファイル(あれば)
~/.my.cnf ユーザ固有のオプション

MYSQL_HOMEはサーバ固有のファイルmy.cnfを含むディレクトリへのパスを含む環境変数です。
MYSQL_HOME がセットされていない状態で mysqld_safe プログラムを使ってサーバをスタートさせると、
mysqld_safe は次のように MYSQL_HOME をセットしようとします。

BASEDIR と DATADIR をそれぞれ、MySQLベースディレクトリとデータディレクトリのパスネームの代理に立てます。
DATADIRにはmy.cnfファイルが存在し、BASEDIRには存在しない場合、mysqld_safeはMYSQL_HOMEをDATADIRにセットします。
または、もしMYSQL_HOMEがセットされておらず、my.cnfファイルがDATADIRに存在しない場合、mysqld_safeはBASEDIRにMYSQL_HOMEをセットします。
MySQL 5.1ではDATADIRのmy.cnfファイルのロケーションとしての使用は認証されていません。BASEDIR の方が良い場所です。
一般的にDATADIRは/usr/local/mysql/dataでバイナリインストールに、または/usr/local/varでソースインストールに使用されます。


my.cnf読み込み順 
※my.cnfの読み込み順は、バージョンによって異なるようです。
同じ設定が複数のファイルに記述されていた場合は後から読まれた
設定によって上書きされます。

MYSQL4.1まで
1. /etc/my.cnf
2. データディレクトリ/my.cnf
3. –defaults-extra-file=オプションに指定されたファイル
4. ~/.my.cnf

MYSQL5.0から
1. /etc/my.cnf
2. $MYSQL_HOME環境変数に指定されるディレクトリにあるmy.cnf
3. –defaults-extra-file=オプションに指定されたファイル
4. ~/.my.cnf
5. ./configure –sysconfdir=で指定されるディレクトリーにあるmy.cnf

■ –sysconfdir=は、5.0.21から追加された検索パスなので、バージョンが
 低いMYSQLに関しては無効になります。

■Windows版のMYSQLの設定ファイルの読み込み順はまた別になります。

mysql Ver 14.14 Distrib 5.1.30, for pc-linux-gnu (i686) using readline 5.1
Copyright 2000-2008 MySQL AB, 2008 Sun Microsystems, Inc.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
The following groups are read: mysql client
The following options may be given as the first argument:
–print-defaults Print the program argument list and exit
–no-defaults Don’t read default options from any options file
–defaults-file=# Only read default options from the given file #
–defaults-extra-file=# Read this file after the global files are read