34
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MySQLのCLIでプロンプトを変更したりクエリ結果に色をつけ見やすくする方法

Last updated at Posted at 2015-07-18

MySQLのCLIは何もしていなければプロンプトがmysql>となっているだけだったり、クエリ結果が真っ白な状態で出てくる。これをホームディレクトリの.my.cnfで設定を加え色々と見やすくする。

プロンプトの変更

mysql>だけの状態になっているのを、ryosukes@localhost [test_db] 12:00 am>のように表示できるようにした。

これはpromptコマンドを実行することで変更できるが、毎回変更するのは面倒なので、.my.cnfで設定する。バックスラッシュが2回続いているのはエスケープシーケンスと被るのを回避するため。

..my.cnf
[mysql]
prompt='\\U [\\d] \\r:\\m \\P>\\_'

他にも以下のようなシーケンスで表示が設定できる。

\c ・・・コマンド何回実行したかを数えるカウンタ。
\D ・・・日時
\d ・・・利用中のデフォルトデータベース
\h ・・・接続先ホスト(サーバ)
\l ・・・デリミタ(区切り文字、デフォルトはセミコロン)
\m ・・・分
\n ・・・改行
\O ・・・月
\o ・・・月(数字)
\P ・・・am/pm
\p ・・・TCP/IPポート番号、またはソケットファイル名
\R ・・・時(24時間制)
\r ・・・時(12時間制)
\S ・・・セミコロン
\s ・・・秒
\t ・・・タブ
\U ・・・ユーザ名(ホスト名含む)
\u ・・・ユーザ名
\v ・・・MySQLサーバのバージョン
\w ・・・曜日
\Y ・・・年(4桁)
\y ・・・年(2桁)
\_ ・・・空白
\  ・・・空白(スラッシュの後に空白文字)
\' ・・・シングルクォーテーションマーク
\" ・・・ダブルクォーテーションマーク
\\ ・・・バックスラッシュ

参考
漢のコンピュータ道 - MySQLのプロンプトを変更する。

結果に色をつける

SELECTでクエリ結果を表示したときなど、真っ白な文字が続いていると、表示データが多い場合見づらかったりする。そこで以下の画像のようにしようと思った。
色付きのクエリ結果1

色付きのクエリ結果2
(画像はnitso/colour-mysql-consoleから引用)

自分の場合pagerで色をつけるのと、nitso/colour-mysql-consoleでも書いてあるようにlessで見れるようにした。以下行ったこと。

grcをインストール

$ brew install grc

設定ファイル

インストールが完了したら、.my.cnfにその設定を加え、色をつけるための.grcatという設定ファイルをホームディレクトリに作成した。

..my.cnf
[mysql]
pager = grcat ~/.grcat | less -iMSx4 -FX -R
..grcat
#row delimeter when using \G key
regexp=[*]+.+[*]+
count=stop
colours=white
-
#table borders
regexp=[+\-]+[+\-]|[|]
colours=cyan
-
#default word color
regexp=[\w]+
colours=green
-
#data in ( ) and ' '
regexp=\([\w\d,']+\)
colours=white
-
#numeric
regexp=\s[\d\.]+\s
colours=yellow
-
#column names when using \G key
regexp=\w+:
colours=white
-
#date
regexp=\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}
colours=yellow
-
#IP
regexp=(\d{1,3}\.){3}\d{1,3}(:\d{1,5})?
colours=yellow
-
#schema
regexp=`\w+`
colours=magenta
-
#email
regexp=[\w\.\-_]+@[\w\.\-_]+
colours=magenta

regexpでパターンを指定し、coloursで色の設定が行える。#ffffffのようにカラーコードを指定して、細かく設定できるかと思ったらできなかった。他にどのような色が使えるかは後日時間ができたら調べなおそうと思う。

参考
grcでMySQLのクエリ結果に色を付ける
mysqlコンソールをpagerで便利に
GitHub - nitso/colour-mysql-console
GitHub - wwjamieson3/grc-mysql

最終的な.my.cnfの設定

..my.cnf
[mysql]
pager = grcat ~/.grcat | less -iMSx4 -FX -R
prompt='\\U [\\d] \\r:\\m \\P>\\_'

これでだいぶ便利になった。

34
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?