MySQLのコマンドライン機能を活用する

文:Vincent Danen(TechRepublic) 翻訳校正:村上雅章・野崎裕子
2008-04-24 08:00:00
  • このエントリーをはてなブックマークに追加
最新特集【一覧】

 MySQLを使用する最も一般的な方法は、phpMyAdminやMySQL AdministratorといったGUI版の管理ツールを用いるというものである。こういったツールは良くできており、MySQLデータベースを容易に管理できるようになっているものの、mysqlというコマンドラインプログラムも負けず劣らず良くできており、より柔軟な使い方ができるようにもなっている。

 まず、mysqlコマンド内で表示されるプロンプトは、カスタマイズすることができる。こういったカスタマイズによって、デフォルトのmysql>というほとんど意味を持たないプロンプトを変更し、コマンドの使い勝手を向上させることができるのだ。例えば、以下のようにすることで、接続ユーザー名とホスト、現在使用しているデータベースを表示させることが可能になる。

mysql> prompt mysql (\u@\h)::\d >\_
PROMPT set to 'mysql (\u@\h)::\d >\_'
mysql (root@localhost)::db1 >

 この設定を常に使用したいのであれば、~/.my.cnfファイルを編集し、以下の内容を追加する。

[mysql]
prompt=mysql (\u@\h)::\d >\_

 mysqlコマンドは、対話的に使えるばかりではなく、シェルスクリプトからMySQLを呼び出すと同時に、スクリプト内に記述したSQL文を解析させるといった使い方もできるようになっている。この実行例を以下に示す。

$ mysql -u me --password=secret wiki -e "select count(page_id) from page"
+----------------+
| count(page_id) |
+----------------+
|            131 |
+----------------+

 シェルスクリプト内での結果解析をより行いやすくしたいのであれば、クエリの最後に\Gオプションを付加することで、垂直表示(結果の列それぞれが独立した行として表示される)が行われるようにすることもできる。

$ mysql -u me --password=secret wiki -e "select count(page_id) from page \G"
*************************** 1. row ***************************
count(page_id): 131

 また、使用しているLinuxカーネルがプロセスの隠蔽をサポートしていない場合、コマンドラインでパスワードを指定すると、他のプロセスから丸見えになってしまう。こういった場合、ユーザ名とパスワードを~/.my.cnfファイル中に記述しておくようにした方が良いだろう。

[mysql]
user=me
password=secret

 さらに~/.my.cnfファイルが他のユーザに読まれ(そして上書きされ)ないよう、そのファイル権限を0600(所有者のみ読み書き可)に設定しておくことを忘れないようにしよう。このように設定しておくと、コマンドラインからユーザー名とパスワードを指定する必要がなくなるため、以下のようにして実行することができるようになる。

$ mysql wiki -e "select count(page_id) from page \G"

 もちろん、他のユーザーでMySQLに接続したい場合には、適切なユーザー名を-uオプションで指定し、-pオプションを指定しておけば、パスワード入力が要求されるようになる。~/.my.cnfファイル中で定義されている内容はデフォルトでしかないというわけである。

この記事は海外CNET Networks発のニュースをシーネットネットワークスジャパン編集部が日本向けに編集したものです。海外CNET Networksの記事へ

  • 新着記事
  • 特集
  • ブログ