MySQLのコマンドラインといえば、長らくmysqlクライアントが中心でした。シンプルで軽量なツールである一方、その分だけユーザー側で工夫する余地も多く、特にプロンプトのカスタマイズはこの連載でもたびたび取り上げられてきました。実際にプロンプトに関する話題は、複数の回にまたがって登場しています。
たとえば、第33回 MySQLのオプションファイル my.[client]に書いてしまうとmysqldumpがエラーになるといった実運用上の落とし穴に触れられていたり、第77回 mysqlコマンドラインクライアントではmysqlコマンドラインクライアントの解説として、\Rやpromptコマンドを用いたカスタマイズが改めて取り上げられています。
このようにmysqlクライアントでは、プロンプトに接続先やデータベース名を埋め込むことで、ヒューマンエラーを防ぐことができました。
MySQL Shellに関しても同様のことが行いたい場合もあると思いますので、今回はprompt.
検証環境
今回はDocker上で起動したMySQLを使って確認します。以下のコマンドでMySQLを起動します。
docker run --name mysql84 --rm -d \ -e MYSQL_ROOT_PASSWORD=password \ mysql:8.4
以上で起動したMySQLコンテナに接続します。
$ docker exec -it mysql84 bash bash-5.1# mysql -uroot -ppassword
いつものMySQLクライアントの画面が表示されれば準備完了です。
mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.4.9 MySQL Community Server - GPL Copyright (c) 2000, 2026, Oracle and/or its affiliates. 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>
プロンプト表示を確認してみる
まずはログイン時のプロンプトを確認してみましょう。
ここでは、以下のような内容が表示されています。
| 要素 | 内容 |
|---|---|
| MySQL | 接続しているDB |
| 127. |
ホストとポート |
| ssl | SSL接続の有無 |
| testdb | 現在のデータベース |
| SQL | モード |
検証環境の確認で使ったmysqlクライアントと比べると、MySQL Shellでは最初から多くの情報が表示されていることがわかります。では次に、この表示をカスタマイズしてみましょう。
プロンプトをカスタマイズしてみる
カスタマイズするには、設定ファイルをユーザーの~/.mysqlsh/
最小構成でカスタマイズしてみる
prompt.
{
}
この設定では、以下のような非常にシンプルな表示になります。
>
狭いディスプレイで扱っている場合に、大きく幅が取られる時などには便利かもしれません。
prompt.jsonで使用できるキー一蘭
prompt.
| キー | 内容 |
|---|---|
desc |
テーマの説明 |
classes |
表示スタイルやテンプレート定義 |
variables |
条件分岐・ |
symbols |
区切り・ |
prompt |
プロンプト記号 |
segments |
表示するUI部品 |
今回はsegmentsとpromptを使ってカスタマイズしていきましょう。
segmentsとpromptでカスタマイズしてみる
MySQL Shellのプロンプトは、segmentsに並べた要素と、最後にpromptで指定した文字列の順で表示されます。つまり、segmentsに入れたオブジェクトの順序がそのまま表示順になります。下記のような設定を入れてみましょう。
{
"prompt": {
"text": "# "
},
"segments": [
{
"text": "%host%:%port%",
"bg": 237,
"fg": 15,
"padding": 1
},
{
"text": "%ssl%",
"bg": 237,
"fg": 15,
"padding": 1
},
{
"text": "%schema%",
"bg": 242,
"fg": 15,
"padding": 1
},
{
"text": "%Mode%",
"bg": 166,
"fg": 15,
"padding": 1
}
]
}
この設定では、text に表示したい内容を指定し、bg で背景色、fg で文字色を指定しています。この設定では、以下のような非常にシンプルな表示になります。たとえば、接続先やモードごとに色を変えることで、視認性を高めたり、重要な情報を目立たせたりできます。
また、paddingは表示文字列の左右に入れる余白の大きさを表します。padding: 1 であれば、文字の左右に1文字分の空きが入るため、各セグメントが詰まりすぎず、見やすい表示になります。逆にpaddingを小さくすればよりコンパクトになり、大きくすればゆったりした見た目になります。
この設定を反映すると、以下のように表示されます。デフォルトプロンプトに含まれていたMySQLの部分を省きつつ、接続先やスキーマ名、モードなど必要な情報は残せています。また、入力待ち部分の文字列も>から#に変更できていることがわかります。
ドキュメントについて
詳しいドキュメントを参照したい場合、現時点ではWeb上に十分まとまった情報が見当たらないことがあります。そのため、手元の環境にインストールされている/usr/
また、README.
実際にこのファイルを見ながら設定を試していくと、利用できる変数や書式の理解が進みやすいでしょう。
まとめ
MySQL Shellはデフォルトの状態でも多くの情報を表示してくれますが、prompt.
特に、接続先ホスト名やポート番号、現在のスキーマ、実行モードなどをコンパクトに整理して表示できるのは便利です。複数環境を行き来することが多い人ほど、こうしたカスタマイズの効果を実感しやすいでしょう。
また、今回は主に segments や prompt を使った基本的なカスタマイズを紹介しましたが、prompt.
まずは最小構成から試し、必要に応じて項目や色、余白を調整しながら、自分にとって使いやすいMySQL Shellのプロンプトを作ってみてください。