皆さんはmysqlコマンドラインクライアントは利用していますでしょうか? 最近は便利なGUIツールもたくさんあるため、利用する機会が少ない方もいるかもしれません。
mysqlコマンドラインクライアントにはhelpというコマンドがあり、実行中はいつでもコマンド一覧を確認することができます。
今回はmysqlコマンドラインクライアントについて、使い方を一部紹介していきます。なお、今回利用しているMySQLはバージョン8.0.11、OSはCentOS7を利用しています。
mysqlコマンドラインクライアントの実行
mysqlコマンドラインクライアントは、起動時に様々なプションを渡すことができます。オプションによって接続するMySQLの向き先やユーザーを変更したり、出力結果を変更することが可能です。基本的にはmysql
コマンドの後ろにオプションを渡していくことで、組み合わせて利用することができます。同じオプションを複数回渡した場合は、最後に指定したオプションが有効となります。
また、--no-defaults
および--defaults-file
のオプションは最初のオプションとして指定しないとエラーとなります。
これらのオプションはmy.cnfの[mysql]および、[client]セクションに記述しておくことも可能です。
my.cnfについては、第31回 MySQLのオプションファイル my.cnfの豆知識[その1]と第33回 MySQLのオプションファイル my.cnfの豆知識[その2]を御覧ください。
HELPコマンドによるコマンド一覧の確認
mysqlコマンドラインクライアントでhelpを実行するとコマンドの一覧を確認することができます。
helpコマンドではMySQLのHELPに渡した引数の文字列を検索します。ただし、複数の候補がある場合は、さらに文字列を追加して項目を絞ります。
例えば、CREATE USER構文のhelpが読みたい場合、「CREATE」という文字列だけではCREATE USER構文やCREATE DATABASE構文が存在するため、\? CREATE USER
と入力します。
詳しい使い方については第42回 MySQLのちょっとコアなドキュメントを探しにいこうのサーバーサイドヘルプをご参考ください。
\c (clearコマンド)
clearコマンドは入力中のステートメントを取り消すことができます。
例えば途中まで入力していたステートメントをやめて他のステートメントを実行する場合などに有効です。
\P、\n (pager、nopagerコマンド)
pagerコマンドはページング機能を有効にします。こちらは出力結果をlessやmoreなどのコマンドを使って確認することができます。
pagerにgrepを渡すことでgrepコマンドを実行することもできます。
nopagerを実行すると無効にすることができます。
\R (promptコマンド)
プロンプトを指定の文字列に変更することができます。また、特殊文字シーケンスを利用することで、現在使用中のデータベースや時間なども表示することができます。
デフォルトはmysql>
となっています。複数のトランザクションの検証を実施するときなどにプロントをtrx1,trx2 ...のようにトランザクションごとに変更しておくと区別しやすくなり便利です。特殊文字シーケンスの一覧は公式ドキュメントのmysql コマンドの項目をご確認ください。
\s (statusコマンド)
statusコマンドは接続中のMySQLのcharactersetやアップタイムを確認することができます。
また、pagerを実行したり、delimiterを変更した場合もここで確認することが可能です。
\. (sourceコマンド)
sourceコマンドは引数に渡したSQLファイルを実行します。
\! (systemコマンド)
systemコマンドはUnixのshellコマンドを実行します。
実行後はmysqlクライアントに戻るため、一時的にリソースや、ファイルの場所を確認したりする際に利用します。
\W、\w (warnings、nowarningsコマンド)
statementを実行後のwarningの表示を切り替えます。
mysqlクライアントのhistoryについて
mysqlコマンドラインクライントで実行した各コマンドは、homeディレクトリの.mysql_history
というファイルに保存されており、方向キーの↑(上)で遡ることができます。この.mysql_history
ファイルを削除するとコマンド履歴を一括で削除することができます。
通常この履歴には、IDENTIFIED
とPASSWORD
という文字列については大文字、小文字関係なく履歴には残りません。もし他の文字列を履歴として残さないようにする場合は、mysqlコマンドラインクライアントを実行時に--histignore
を利用して、コロン区切りで文字列を追加します。
また、履歴を一切残さないようにするには、.mysql_history
ファイルを/dev/null
へのシンボリックリンクとして作成するか、MYSQL_HISTFILE環境変数を/dev/null
に指定します。詳細は公式ドキュメントのmysqlのロギングの履歴ファイルの制御を御覧ください。
まとめ
今回はmysqlコマンドラインクライアントのコマンドの紹介とhistoryについて説明しました。様々なオプションやコマンドを試してmysqlコマンドラインクライアントを使いこなして行きましょう。