はじめに
MySQLデータベースを操作する際に最初に考える必要があることの1つは、データベースインスタンスに接続して対話する方法です。これには、データベースクライアント(データベースと対話するために使用するコンポーネント)とデータベースサーバー(データを保存、整理、およびアクセスを提供する実際のMySQLインスタンス)間の連携が必要です。
このため、認証に必要な情報を提供してクライアントとして接続する方法を理解する必要があります。このガイドでは、ネイティブのmysql
コマンドラインクライアント(データベースインスタンスと対話する最も一般的で便利な方法の1つ)を使用してMySQLデータベースに接続する方法について説明します。
コンパニオンガイドでは、MySQLの認証をプロジェクトのニーズに合わせて構成する方法を見つけることができます。MySQLでの認証の仕組みをより完全に理解するために、両方のガイドを読むことを検討してください。
mysql
クライアントに関する基本情報
mysql
クライアントは、MySQLのデフォルトのコマンドラインクライアントおよびSQLシェルです。インタラクティブに使用してサーバーとのシェルセッションを開始したり、SQLファイルをフィードしてユーザーの操作なしで実行したりできます。構成オプションを実装し、環境をセットアップするときに特に役立ちます。インタラクティブな探索とアドホッククエリも、プログラムが使用するアクセスパターンを開発する際に強力な武器となります。
MySQLサーバーへの接続および認証の方法は、サーバーの構成によって異なります。次のセクションでは、いくつかの基本的な接続オプションについて説明します。わかりやすくするために、ローカル接続とリモート接続を区別します。
- ローカル接続:クライアントとMySQLインスタンスが同じサーバー上にある接続
- リモート接続:クライアントが別のコンピューターで実行されているネットワークアクセス可能なMySQLインスタンスに接続している場合
まず、同じコンピューターからデータベースに接続することから始めましょう。
mysql
を使用してローカルデータベースに接続する
引数なしで、mysql
コマンドは、ローカルデータベースにアクセスするためにUnixソケットファイルへの接続を試みます。通常、デフォルトのソケットファイルの場所は、構成ファイルまたはコンパイル済みのデフォルト値によって決定されます。デフォルトでは、オペレーティングシステムのユーザー名を使用してデータベースへの接続が試行されます。
したがって、現在のユーザーがローカルデータベースの有効なMySQLユーザーである場合、次のように入力して接続を試みることができます。
mysql
アカウントが存在し、パスワードが不要な場合、またはMySQLソケット認証がアカウント用に構成されている場合、自動的にログインします。ユーザー名がMySQLに存在しない場合、またはパスワードまたは追加の認証が必要な場合、コマンドは失敗します。
mysql
がデータベースへのログインを試みる方法を制御するには、コマンドラインオプションを使用してコマンドに追加情報を渡します。
--user=<username>
または-u <username>
:認証に使用するMySQLユーザーを指定します。--password
または-p
:MySQLユーザーのパスワードの入力をMySQLに指示します。--host=127.0.0.1
または-h 127.0.0.1
:mysql
に、Unixソケットの代わりにローカルTCPループバックアドレスを使用してローカルMySQLインスタンスに接続するように指示します。MySQLサーバーがUnixソケットを使用するように構成されていない場合は、これを使用することが重要です。
注: MySQLは127.0.0.1
をlocalhost
とは異なる方法で解釈します。127.0.0.1
を指定すると、TCP接続を使用することを意味しますが、localhost
を指定すると、MySQLはUnixソケットを使用してローカルデータベースに接続しようとします。
したがって、Unixソケットを使用して接続したまま、パスワードを使用してMySQLユーザーeva
としてログインする必要がある場合は、次のように入力できます。
mysql --user=eva --password
mysql
クライアントは、アカウントのパスワードの入力を求めます。
同じユーザー名でログインしようとするが、ローカルデータベースへのTCP接続を介してログインしようとする場合は、代わりに次のように入力します。
mysql --user=eva --password --host=127.0.0.1
デフォルトの認証構成と、最初の管理ユーザー名とパスワードは、MySQLのインストール方法によって異なる場合があります。ただし、多くの方法では、Unixソケットを使用するようにMySQLを設定し、デフォルトのroot
ユーザーを管理アカウントとして含めます。
これらの場合、次のように入力して、root
ユーザーとしてデータベースにログインできます。
mysql --user=root --password
続行するには、インストール中に選択または生成された管理者パスワードの入力を求められます。
これらのすべての方法で、ローカルMySQLデータベースに接続できます。
リモートデータベースへの接続
リモートMySQLデータベースに接続する場合は、リモートホストのネットワークロケーションを指定し、場合によっては追加情報を追加する必要があります。
利用可能な認証方法は、MySQLインスタンスの構成によって異なります。ただし、最も一般的なのは、認証するために次のパラメーターを提供する必要があることです。
オプション | 説明 |
---|---|
--host= または -h | MySQLサーバーのネットワークホスト名またはIPアドレス。 |
--port= または -P | MySQLサーバーが実行されているネットワークポート。サーバーがポート3306(デフォルトのMySQLポート)を使用している場合、このパラメーターは省略できます。 |
--user= または -u | 接続するデータベースのユーザー名。指定しない場合、オペレーティングシステムのユーザー名が使用されます。 |
--password または -p | 指定されたアカウントのパスワードを提供することを示します。mysql クライアントは、Enterキーを押すとパスワードの入力を求めます。 |
MySQLデータベース | アクセスするMySQLデータベース名。指定しない場合、mysql は特定のデータベースに接続せずにサーバーに接続します。 |
リモートデータベースに接続するための基本的な形式は、通常、次のようになります。
mysql --host=<hostname> --port=<port> --user=<user> --password <database>
Enterキーを押すと、mysql
クライアントはパスワードの入力を求めます。認証に成功すると、新しいインタラクティブMySQLセッションが開始されます。
例として、次の要件でデータベースに接続したいと想像できます。
- ホスト名:
myhost
- ポート:1234
- データベース:
applicationdb
- ユーザー名:
myapplicationuser
- パスワード:
mypass
次のオプションを指定してmysql
を呼び出すと、認証できます。
mysql --host=myhost --port=1234 --user=myapplicationuser --password applicationdb
Enterキーを押すと、パスワードの入力を求められ、そこでmypass
で認証できます。
MySQLサーバーの認証構成の調整
ユーザーがMySQLインスタンスに対して認証する方法を規定するルールを変更する場合は、サーバーの構成を変更することで実行できます。MySQLの認証構成を変更する方法については、この記事をご覧ください。
結論
このガイドでは、クライアント側からのMySQL認証について説明しました。ローカルとリモートの両方のデータベースインスタンスに接続するために、mysql
コマンドラインクライアントを使用する方法を示しました。
さまざまなMySQLインスタンスに接続する方法を知ることは、データベースシステムを使い始める際に理解する必要がある最初のステップの1つです。開発用に特別な認証を必要としないローカルMySQLインスタンスを実行する場合がありますが、ステージング環境および本番環境のデータベースはほぼ確実に認証を必要とします。どちらの場合でも認証できることで、さまざまな環境で適切に作業できるようになります。
FAQ
はい、Pythonを使用してMySQLデータベースに接続できます。MySQL Pythonコネクタをダウンロードし、connect()
コンストラクターを使用する必要があります。
MySQLは、コネクタをダウンロードすると、開発者ガイドを提供します。
はい、Javaを使用してMySQLデータベースに接続できます。MySQL Javaコネクタをダウンロードする必要があります。
MySQLは、コネクタのインストールガイドと、開始するための例を提供しています。
リモートMySQLデータベースに接続する場合は、リモートホストのネットワークロケーションを指定し、場合によっては追加情報を追加する必要があります。
利用可能な認証方法は、MySQLインスタンスの構成によって異なります。ただし、最も一般的なのは、認証するために次のパラメーターを提供する必要があることです。
オプション | 説明 |
---|---|
--host= または -h | MySQLサーバーのネットワークホスト名またはIPアドレス |
--port または -P | MySQLサーバーが実行されているネットワークポート。サーバーがポート3306(デフォルトのMySQLポート)を使用している場合、このパラメーターは省略できます。 |
--user= または -u | 接続するデータベースのユーザー名。指定しない場合、オペレーティングシステムのユーザー名が使用されます。 |
--password または -p | 指定されたアカウントのパスワードを提供することを示します。mysql クライアントは、Enterキーを押すとパスワードの入力を求めます。 |
MySQLデータベース | アクセスするMySQLデータベース名。指定しない場合、mysql は特定のデータベースに接続せずにサーバーに接続します。 |
MySQLが受け入れることができる接続の数は、max_connections
変数によって制御されます。デフォルトでは、この値は151です。
必要に応じてこの値を手動で増やすことができ、サーバーに増加した接続をサポートするのに十分なRAMがある場合。
MySQLデータベースの接続数を特定する方法はいくつかあります。最も一般的な方法は、mysql
コマンドラインを使用することです。
接続数を表示するthreads_connected
変数を使用できます。
サーバー内で実行されているスレッドのセットによって現在実行されている操作を示すshow processlist
コマンドを使用することもできます。