概要
開発中にアプリケーションからどのようにMySQLにクエリが実行されているのかを確認します。
前提
- CentOS上のMySQL5.6.14で確認しました
手順
my.cnfを編集する
$ sudo vim /etc/my.cnf
mysqldディレクティブの下に下記のように指定します。
[mysqld]
general_log=ON
general_log_file=/var/log/mysqld_query.log
MySQLを再起動する
$ sudo /etc/init.d/mysqld restart
ログファイルを確認する
$ sudo tail -f /var/log/mysqld_query.log
Time Id Command Argument
150310 5:52:45 1 Connect UNKNOWN_MYSQL_USER@localhost as on
1 Quit
150310 5:53:05 2 Connect cid@localhost on sample
2 Query SELECT `article`.`title`, `article`.`body`, `article`.`id`, `article`.`createdAt`, `article`.`updatedAt` FROM `articles` AS `article` LIMIT 1 OFFSET 1
2 Query (SELECT * FROM `tags` AS `tag` WHERE `article_id` = 3 ORDER BY `tag`.`id` ASC)
備考
最初調べてると、my.cnfに下記のように書く例が多かったんですが、
[mysqld]
log=myquery.log
動かしてみると、エラーになるので、今回設定したような方法になりました。
/usr/sbin/mysqld: ambiguous option '--log=/var/log/mysql.log' (log-bin, log_slave_updates)