MySQL初心者にマスターしてほしいコマンドラインからの使用方法
  • facebookページ
  • twitterページ
  • 2019.11.27

    MySQL初心者にマスターしてほしいコマンドラインからの使用方法

    MySQLを管理する場合、phpMyAdminが使えないサーバーを管理することもあるので、ターミナルなどから使えるコマンドもマスターしましょう。今回はそういった方のために、MySQLをターミナルからコマンドで使う方法を解説します。

    MySQLをコマンドラインから操作する

    オープンソースのデータベースとして多くのWebシステムで利用されているMySQLですが、コマンドラインからも操作できるのをご存知でしょうか。なお、MySQLには、Webブラウザから操作できる便利なphpMyAdminがあるので、わざわざコマンドラインから実行しなくても大抵のことができます。しかし、データベースを管理することになったら、コマンドラインからの操作が必要なケースが発生します。

    そこで、まずは、コマンドラインからMySQLを操作するための基本についてご紹介します。

    MySQLのクライアントプログラムとは何か

    MySQLもそうですが、SQLで操作するデータベース管理ツールは、コンピューターに常駐するサーバープログラムがデータベースを管理します。そして、このサーバープログラムには、予め準備されたネットワークポートにアクセスしたり、LinuxなどのOSで実現されるプロセス間通信などで、SQLを受け付けます。

    なお、よく利用されるMySQLの管理ツールであるphpMyAdminは、MySQLのサーバーがWebサーバーと通信することで、Webブラウザに必要な情報を表示したり、データの追加や修正等を実施します。

    では、コマンドラインから直接MySQLのサーバーと通信するにはどうすればよいでしょうか。この場合に使われるのが、MySQLのクライアントプログラムです。

    MySQLクライアントプログラムをインストールする

    代表的なLinuxであるDebian, Ubuntu、Red Hat Enterprise Linux, CentOSなどにMySQLをインストールする場合、aptコマンドやdnf, yumコマンドを使うのが一般的です。そして、こういったコマンドでMySQL、または、互換性のあるmariadbをインストールすると、サーバー用のプログラムといっしょに、コマンドラインからSQLを実行するためのプログラムがインストールされます。

    例えば、UbuntuでMySQLと互換性のあるmariadbのインストールに使われるパッケージは、次の3つです。

    Ubuntu用mariadbインストールパッケージの例
    mariadb-client-10.3
    mariadb-common
    mariadb-server-10.3

    そのため、Linuxサーバーに、mariadbのサーバープログラムとクライアントプログラムを同時にインストールするには、次のコマンドを使用します。なお、以下の例で使用するaptコマンドはDevianやUbuntuのパッケージ管理コマンド、yumはRed Hat Enterprise LinuxやCentOSの管理用コマンドです。

    Devian, Ubuntuの場合

    Red Hat Enterprise Linux, CentOSの場合

    コマンドラインから操作するには

    MySQLのクライアントプログラムがインストールされると、それらのプログラムはターミナルから実行できます。もし、LinuxサーバーやMacから実行するなら、まずはターミナルを起動してください。

    なお、MySQLのクライアント用プログラムは、mysqlです。次のように、キーボードから入力すると、このプログラムのバージョンが表示されます。

    MySQLのクライアントプログラムが動作するか確認する実行例

    また、クライアント用プログラムとして、mysqlのほかにも幾つかインストールしてあるので、必要に応じてそれらも利用します。

    クライアントプロフラムmysqlを使う

    先ほど紹介したように、MySQLのクライアントプログラムとしてよく使われるのが、mysqlコマンドです。なお、mysqlコマンドを実行すると、シェルのように動作し、キーボードからSQLを打ち込むと、そのSQLを処理した結果を返します。次から、このmysqlコマンドを使い方について解説します。

    mysqlコマンドをターミナルで実行する

    mysqlコマンドを利用する場合、通常、Linuxのターミナルなどで、オプションを指定して実行します。なお、mysqlにはたくさんのオプションが用意されており、必要に応じてそれらを指定しますが、ここでは個々のオプションの説明は省きます。興味のある方は、下記のWebサイトなどを参照してください。

    MySQL :: MySQL 5.6 リファレンスマニュアル :: 4.5.1.1 mysql のオプション

    そして、こらのオプションの中で、よく使われるのがユーザー名を指定するオプションとパスワードを指定するオプションです。次に、MySQLに登録してあるuserというユーザー名とパスワードを使ってMySQLのクライアントプログラムを実行する例を紹介します。

    mysqlの実行例

    なお、パスワードは、次のようにも指定できます。

    オプションでパスワードを指定して実行する例

    mysqlコマンド内でSQLを使う

    mysqlを実行すると、カーソルのある行の左側、すなわちプロンプトが変わります。これが変わったら、SQLが操作してデータベースを参照したり、データの登録や修正、さらにはテーブルの削除やファイルへの書き出しなどの管理コマンドが実行できます。

    mysqlコマンドの実行例

    この例では、ターミナルのプロンプト「$」からmysqlコマンドを実行して、プロンプトが「mysql>」に変わっています。この状態で、SQLを実行します。

    また、mysqlを終了してシェルに戻るには、コントールキーとqを同時に押すか、exitはたはquitを実行します。

    リダイレクトで実行する

    mysqlコマンドを使ってSQLを実行する場合、キーボードから打ち込んで実行することもできますが、シェルのリダイレクトを使ってテキストファイルに書いたSQLの実行も可能です。

    なお、シェルのリダイレクトとは、あるコマンドのターミナルへの出力を、別のコマンドへの入力に使う方法で、ファイルを指定して、それをあるコマンドの入力に使うことも可能です。そして、この機能を使うことで、ある時刻になったら、予め用意したSQLを自動で実行させることも可能です。

    リダイレクトでmysqlを実行する例

    この例では、db1というデータベースに対してsample.sqlに書かれたSQLを実行し、その結果をlogというファイルに出力しています。

    mysqlコマンドをリモートで使うには

    Webシステムによっては、Webサーバーとデータベースが別のサーバーで構成されており、MySQLを使っているのに、その管理にphpMyAdminが使えないケースもあります。その場合、直接データベースサーバーにログインして、mysqlコマンドを使う方法のが普通ですが、mysqlコマンドでリモート接続しての操作も可能です。

    そして、mysqlコマンドをリモートで使うには、–hostオプション、または、-hオプションで接続するホスト名またはIPアドレスを指定します。

    リモート接続で使う例

    なお、クラウド上のサーバーに設定されたMySQLのサーバーに接続して操作するなら、暗号化が必須です。そして、MySQLは暗号化もサポートしており、サーバー側で設定しておけば、SSLによる暗号化による接続が可能です。ぜひ、活用してください。

    暗号化でリモート接続する例

    この例では、SSLのCA証明書、ca-cert.pemを指定してSSL通信でMySQLに接続しています。SSLの設定に関しては書きのURLなどを参考にしてください。

    https://dev.mysql.com/doc/refman/5.6/ja/ssl-connections.html
    MySQL :: MySQL 5.6 リファレンスマニュアル :: 6.3.10 セキュアな接続のための SSL の使用

    mysqlからよく使われるコマンド

    普段、phpMyAdminなどのGUIなデータベース管理ツールに慣れている方が、ターミナルからmysqlを使うと、不便だと感じることがたくさんあります。例えば、phpMyAdminなら、画面を見れば一目で解ることでも、いちいちキーボードから打ちこんで表示しなければなりません。mysqlに使い慣れた方も、同じように不便に感じていますが、コマンドを使って必要な情報を表示して使いこなしています。次から、mysqlコマンドを使った際に、キーボードから操作する際によく使われるコマンドをご紹介します。

    一覧を表示する

    先ほど例として紹介したように、データベースやテーブルの一覧は、phpMySQLなどのGUI管理ツールを使えば、簡単に見れやり、選んだりできるのですが、ターミナルから操作するには手で打ち込まなければなりません。そのため、一覧を表示するコマンドは、よく使われます。まずは、このコマンドをマスターして、いつでもデータベースやテーブルの一覧を表示できるようになりましょう。

    なお、mysqlで一覧を表示するには、showを使います。そして、データベースとテーブルの一覧を表示するには次のように実行します。

    データベースの一覧を表示する

    テーブルの一覧を表示する

    また、テーブルに定義された列の名称やデータの型を調べるには、次のコマンドを使います。

    テーブルの構造をチェックする

    SQLの実行結果をテキストファイルに書き出す

    ターミナルでSQLを実行して不便な点のもう一つは、ターミナルに表示できる文字が限られており、SQLで大きなデータを表示すると、スクロールして流れてしまったり、画面が乱れて読み取れなかったりする点です。そういった大きなデータをチェックするには、一旦ファイルに格納し、テキストエディタに表示して確認しましょう。

    なお、mysqlコマンドには、SELECT文の実行結果をファイルに書き出す機能があります。使い方は簡単で、通常のSELECT文の後に「INTO OUTFILE ファイル名」と付けて実行するだけです。

    MySQLで抽出結果をファイルに出力するSQLの書き方

    SELECT ファイルに書き出したいフィールド名 FROM テーブル名 WHERE 条件 INTO OUTFILE ‘ファイル名’;

    抽出結果をファイルに書き出す例

    この例では、アカウント「user」が書き込み権を持つ、/home/user/test/に、out.txtというファイル名で、SELECT文の結果を出力しました。このファイルは、パソコンなどに転送すれば、テキストエディタで詳しく解析できます。

    MySQLを管理するたらコマンドでの操作もマスターしよう

    MySQLには、phpMyAdminという優れたGUIの管理ツールがあるので、ターミナルで操作する機会は特別なケースがなければ無いかもしれません。しかし、ターミナルで操作した方が簡単でできるケースも少なくありません。MySQLのデータベースの管理を任されたら、phpMyAdminによるGUIの操作と、ターミナルからmysqlコマンドを使った操作の両方をマスターしておきましょう。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE