支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに

開発中のサービスで大きなデータを扱いたい場合に便利なのがデータベースです。MySQLは人気の無料データベースであり、非常に便利かつ無料で扱うことができるものです。MySQLは、様々なOSで扱うことができる他、操作がシンプルで、周辺ソフトウェアが非常に充実しているので、初学者の方が初めて触れるデータベースとしても適切だといえます。 本記事では、MySQLサーバーへの接続方法について解説していきます。本記事で、データベース接続をマスターしていきましょう。

はじめに
1.MySQLプログラムの起動
2.サーバーへの接続
3.プロトコルの指定
おわりに

1.MySQLプログラムを起動する

MySQLプログラムをシェルやコマンドプロンプトなどのコマンド行から起動するには、プログラム名に続けて、実行させたいことを支持するためのオプションや引数を入力します。プログラムを起動する際は、”mysql”コマンドを打ち込みます。MySQLプログラムを起動する際には、binディレクトリ以外のディレクトリなどから、MySQLを起動しようとすると毎回「program not found」のエラーが表示される場合は、プログラムがインストールされているbinディレクトリのパスが必要となります。

2.サーバーへの接続

自分で開発しているプログラムやサービスをMySQLサーバーに接続したい場合は、サーバーが稼働しているホストの名前と、アカウントのユーザー名・パスワードなど、接続に必要なパラメータを使用する必要があります。今ご紹介したそれぞれのパラメータには、デフォルトで値が設定されていますが、必要であればコマンド行やオプションファイルでオプションを指定することでオーバーライドすることができます。 “mysql”というコマンドを打ち込むと、接続パラメータを指定せずにmysqlを呼び出すことができます。 よってここでは、以下のパラメータが設定されます。

・デフォルトのホスト名である”localhost”
・デフォルトのユーザー名。WindowsではODBC、UnixではUnixのログイン名。
・パスワードは送信されていません。(-p --passwordなどを指定していないため)

パスワードやホスト名・ユーザー名を指定するには、コマンド行でオプションを指定する必要があります。 以下はその例です。

mysql --host=localhost --user=myname --password=mypass mydb
mysql -h localhost -u myname -pmypass mydb

パスワードオプションにおけるパスワードの値はオプションです。そのため、-pもしくは--passwordオプションを用いてパスワードを指定する場合、-p及び--passwordとそれ以後のパスワードの間にスペースは必要ありません。
また、-p や--passwordのあとに続く形でパスワードを入力した場合、システム上の他のユーザーの実行したコマンドにより、コマンド行で指定されているパスワードを見られてしまう可能性があります。この問題を解消するためには、パスワードの値を入力せずに-p 及び --password のオプションを指定する必要があります。 パスワードの値を設定せずに、パスワードオプションを指定すると、接続しようとしているプログラムの側が、プロンプトを出力し、パスワードが入力されるのを待ちます。これは、コマンド行にパスワードを打ち込むよりも、セキュアな方法であると言えます。

3.プロトコルの指定

localhostへ接続するときや、ポート番号を指定する際、MySQLプログラムはUnixソケットファイルを使用してローカルサーバーに接続を試みてしまいます。クライアントプログラム側がTCP/IP接続を行ってローカルサーバーに接続することを保証するためには、--host -h を使用して、ホスト名の値である127.0.0.1、もしくはローカルサーバーのIPアドレスか名前を指定します。上記の他に、--protocol=TCPオプションを使用して、localhostに対して接続プロトコルを指定することができます。
Windowsを使用している場合は、--pipe --protocol=PIPE オプションを指定するか、ピリオド(.)をホスト名として指定することによって、MySQLクライアントが名前つけパイプ接続を使用することを強制することができます。

おわりに

この記事では、MySQLサーバーに接続する方法について解説していきました。様々なオプションを指定して、プロトコルや接続方法を明示的に指定することで想像通りの接続方法を実現していきましょう。初学者の場合は、デフォルトで問題ありませんが、エラーなどの対応を行う場合は、オプションを検索するなどして、直していきましょう。