皆さんはmysqlコマンドラインクライアントは利用していますでしょうか? 最近は便利なGUIツールもたくさんあるため、
mysqlコマンドラインクライアントにはhelpというコマンドがあり、
今回はmysqlコマンドラインクライアントについて、
mysqlコマンドラインクライアントの実行
mysqlコマンドラインクライアントは、mysql
コマンドの後ろにオプションを渡していくことで、
--no-defaults
および--defaults-file
のオプションは最初のオプションとして指定しないとエラーとなります。
$ mysql -uroot --defaults-file=/etc/mysql/my.cnf -p mysql: [ERROR] unknown variable 'defaults-file=/etc/mysql/my.cnf'
これらのオプションはmy.
my.
HELPコマンドによるコマンド一覧の確認
mysqlコマンドラインクライアントでhelpを実行するとコマンドの一覧を確認することができます。
mysql> help For information about MySQL products and services, visit: http://www.mysql.com/ For developer information, including the MySQL Reference Manual, visit: http://dev.mysql.com/ To buy MySQL Enterprise support, training, or other products, visit: https://shop.mysql.com/ List of all MySQL commands: Note that all text commands must be first on line and end with ';' ? (\?) Synonym for `help'. clear (\c) Clear the current input statement. connect (\r) Reconnect to the server. Optional arguments are db and host. delimiter (\d) Set statement delimiter. edit (\e) Edit command with $EDITOR. ego (\G) Send command to mysql server, display result vertically. exit (\q) Exit mysql. Same as quit. go (\g) Send command to mysql server. help (\h) Display this help. nopager (\n) Disable pager, print to stdout. notee (\t) Don't write into outfile. pager (\P) Set PAGER [to_pager]. Print the query results via PAGER. print (\p) Print current command. prompt (\R) Change your mysql prompt. quit (\q) Quit mysql. rehash (\#) Rebuild completion hash. source (\.) Execute an SQL script file. Takes a file name as an argument. status (\s) Get status information from the server. system (\!) Execute a system shell command. tee (\T) Set outfile [to_outfile]. Append everything into given outfile. use (\u) Use another database. Takes database name as argument. charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets. warnings (\W) Show warnings after every statement. nowarning (\w) Don't show warnings after every statement. resetconnection(\x) Clean session context. For server side help, type 'help contents'
helpコマンドではMySQLのHELPに渡した引数の文字列を検索します。ただし、
例えば、\? CREATE USER
と入力します。
詳しい使い方については第42回 MySQLのちょっとコアなドキュメントを探しにいこうのサーバーサイドヘルプをご参考ください。
\c (clearコマンド)
clearコマンドは入力中のステートメントを取り消すことができます。
例えば途中まで入力していたステートメントをやめて他のステートメントを実行する場合などに有効です。
\P、\n (pager、nopagerコマンド)
pagerコマンドはページング機能を有効にします。こちらは出力結果をlessやmoreなどのコマンドを使って確認することができます。
pagerにgrepを渡すことでgrepコマンドを実行することもできます。
nopagerを実行すると無効にすることができます。
mysql> pager less PAGER set to 'less' mysql> SELECT * FROM d1.t1; 8 rows in set (0.00 sec)
mysql> pager grep 'two' PAGER set to 'grep 'two'' mysql> SELECT * FROM d1.t1; | 2 | two | 8 rows in set (0.00 sec)
\R (promptコマンド)
プロンプトを指定の文字列に変更することができます。また、
デフォルトはmysql>
となっています。複数のトランザクションの検証を実施するときなどにプロントをtrx1,trx2 ...のようにトランザクションごとに変更しておくと区別しやすくなり便利です。特殊文字シーケンスの一覧は公式ドキュメントのmysql コマンドの項目をご確認ください。
mysql> \R \D > PROMPT set to '\D >' Mon Jul 30 08:46:34 2018 >
\s (statusコマンド)
statusコマンドは接続中のMySQLのcharactersetやアップタイムを確認することができます。
また、
mysql> status -------------- /usr/local/mysql/bin/mysql Ver 8.0.11 for linux-glibc2.12 on x86_64 (MySQL Community Server - GPL) Connection id: 19 Current database: Current user: root@localhost SSL: Not in use Current pager: stdout Using outfile: '' Using delimiter: ; Server version: 8.0.11 MySQL Community Server - GPL Protocol version: 10 Connection: Localhost via UNIX socket Server characterset: utf8mb4 Db characterset: utf8mb4 Client characterset: utf8mb4 Conn. characterset: utf8mb4 UNIX socket: /tmp/mysql.sock Uptime: 5 days 13 hours 16 min 50 sec Threads: 3 Questions: 103 Slow queries: 0 Opens: 177 Flush tables: 2 Open tables: 153 Queries per second avg: 0.000 --------------
\. (sourceコマンド)
sourceコマンドは引数に渡したSQLファイルを実行します。
mysql> source /home/mysql/sample.sql Query OK, 1 row affected (0.10 sec)
\! (systemコマンド)
systemコマンドはUnixのshellコマンドを実行します。
実行後はmysqlクライアントに戻るため、
mysql> system echo "test" test
\W、\w (warnings、nowarningsコマンド)
statementを実行後のwarningの表示を切り替えます。
mysqlクライアントのhistoryについて
mysqlコマンドラインクライントで実行した各コマンドは、.mysql_
というファイルに保存されており、.mysql_
ファイルを削除するとコマンド履歴を一括で削除することができます。
通常この履歴には、IDENTIFIED
とPASSWORD
という文字列については大文字、--histignore
を利用して、
$ mysql --histignore '*DELETE*:*INSERT*' -u root -p
また、.mysql_
ファイルを/dev/
へのシンボリックリンクとして作成するか、/dev/
に指定します。詳細は公式ドキュメントのmysqlのロギングの履歴ファイルの制御を御覧ください。
まとめ
今回はmysqlコマンドラインクライアントのコマンドの紹介とhistoryについて説明しました。様々なオプションやコマンドを試してmysqlコマンドラインクライアントを使いこなして行きましょう。