grcでMySQLのクエリ結果に色を付ける

grc(Generic Colouriser)を使ってMySQLのクエリ結果に色を付ける方法の紹介です。


この投稿はMySQL Casual Advent Calendar 2014の7日目の記事です。



色の付いたクエリ結果(画像はcolour-mysql-consoleより引用)




grcのインストール


Linuxの場合は ~/.bashrc に一例として下記のシェルスクリプトを追記し、実行してください。


if which grc >/dev/null 2>&1 ; then
  :
else
  wget http://kassiopeia.juls.savba.sk/~garabik/software/grc/grc_1.5.tar.gz
  tar zxvf grc_1.5.tar.gz
  cd grc-1.5
  sudo sh ./install.sh
  sudo wget -O /usr/share/grc/conf.mysql https://raw.githubusercontent.com/nitso/colour-mysql-console/master/.grcat >/dev/null 2>&1
  cd ../
  rm -rf ./grc?1.5*
fi

Macの場合は homebrew でインストールできるようです。(私は試していません)


brew install grc

grc にパスが通っていれば、grcのインストールは完了です。


which grc
=> /usr/bin/grc

最後に、~/.my.cnf に下記のコードを追記してください。less のオプションは -R が最低限あれば大丈夫です。


[mysql]
pager = grcat /usr/share/grc/conf.mysql | less -iMSx4 -FX -R

ここまでの手順を正しく終えていれば、MySQLコンソールで実行したクエリ全てに色が付きます。





やっていること


grc をインストールすることで、grcコマンドとgrcatコマンドがインストールされます。


その後、MySQLのpagerにgrcatとconf.mysqlを指定することで、クエリ結果への色付けを実現しています。


grcとgrcatの違いですが、grc自体は汎用的な色付けツールを意図しており、grcはconfを自動で見付ける、grcatはconf指定が必須、という違いがあるようです。


汎用的な色付けツールなので、grcは一例としてこういう使い方もできるようです。


grc netstat
grc ping hostname
grc tail /var/log/syslog
grc ps aux

Railsのdevelopment.logをgrcで色付け
Railsのdevelopment.logをgrcで色付け

今回使ったMySQLの色付けルールは、grcの作者とは別の人物が書いたものです。気になった方は、独自のルールを書いてgrcの普及に貢献するとよいかもしれません。


さらに詳しいgrcの使い方については、 grcのgrcの公式ドキュメントをご参照ください。





参考リンク


http://kassiopeia.juls.savba.sk/~garabik/software/grc/README.txt

nitso/colour-mysql-console · GitHub

OS X Lion Terminal Colours - Noise & Heat





最後に:この記事を読んだ人に1つ質問です


MySQL5.6クライアントのプロンプト(クエリ結果ではない)に色を付ける方法をどなたかご存知ないですかね?


5.6になり、readlineの代わりにeditlineを使うようになった影響なのか、MYSQL_PS1を使った色付けが出来なくなってしまいました…。


export MYSQL_PS1=$(echo -e "\e[1;33mmysql[\d]\e[0m\n> ") # これが使えない

どなたか代わりの方法を知っている人がいたらご教示いただけるとありがたいです…(^^)


著者プロフィール
Webサイトをいくつか作っています。
著者プロフィール