はじめに
MySQLデータベースを操作する際に最初に考えるべきことの1つは、データベースインスタンスに接続し、操作する方法です。これには、データベースと対話するために使用するコンポーネントであるデータベースクライアントと、データを保存、整理し、アクセスを提供する実際のMySQLインスタンスであるデータベースサーバーとの間の連携が必要です。
このため、認証に必要な情報を提供してクライアントとして接続する方法を理解する必要があります。このガイドでは、データベースインスタンスと対話する最も一般的で有用な方法の1つである、ネイティブのmysqlコマンドラインクライアントを使用して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ソケットを使用してローカルデータベースに接続しようとします。
したがって、MySQLユーザーevaとしてパスワードでログインする必要があり、かつUnixソケットを使用して接続する場合、次のように入力します。
mysql --user=eva --password
`mysql`クライアントは、そのアカウントのパスワードを要求します。
同じユーザー名で、ローカルデータベースへのTCP接続を介してログインを試したい場合は、代わりに次のように入力します。
mysql --user=eva --password --host=127.0.0.1
デフォルトの認証構成、および初期の管理者ユーザー名とパスワードは、MySQLのインストール方法によって異なる場合があります。しかし、多くの方法では、MySQLがUnixソケットを使用するように設定され、管理者アカウントとしてデフォルトのrootユーザーが含まれています。
これらの場合、次のように入力してrootユーザーとしてデータベースにログインできます。
mysql --user=root --password
続行するために、インストール中に選択または生成された管理者パスワードの入力を求められます。
これらのすべての方法で、ローカルのMySQLデータベースに接続できます。
リモートデータベースへの接続
リモートのMySQLデータベースに接続したい場合は、リモートホストのネットワークロケーションを提供し、場合によっては追加の情報を含める必要があります。
利用可能な認証方法は、MySQLインスタンスの構成によって異なります。ただし、最も一般的には、認証のために以下のパラメータを提供する必要があります。
| オプション | 説明 |
|---|---|
--host= または -h | MySQLサーバーのネットワークホスト名またはIPアドレス。 |
--port= または -P | MySQLサーバーが実行されているネットワークポート。サーバーがデフォルトのMySQLポートであるポート3306を使用している場合、このパラメータは省略できます。 |
--user= または -u | 接続したいデータベースユーザー名。指定しない場合、オペレーティングシステムのユーザー名が使用されます。 |
--password または -p | 指定されたアカウントのパスワードを提供することを示します。Enterキーを押すと、mysqlクライアントがパスワードの入力を促します。 |
| 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サーバーが実行されているネットワークポート。サーバーがデフォルトのMySQLポートであるポート3306を使用している場合、このパラメータは省略できます。 |
--user= または -u | 接続したいデータベースユーザー名。指定しない場合、オペレーティングシステムのユーザー名が使用されます。 |
--password または -p | 指定されたアカウントのパスワードを提供することを示します。Enterキーを押すと、mysqlクライアントがパスワードの入力を促します。 |
| MySQLデータベース | アクセスしたいMySQLデータベース名。指定しない場合、mysqlは特定のデータベースに接続せずにサーバーに接続します。 |
MySQLが受け入れられる接続数は、max_connections変数によって制御されます。デフォルトでは、この値は151です。
必要であればこの値を手動で増やすことができ、その際サーバーには増えた接続をサポートするのに十分なRAMが必要です。
MySQLデータベース上の接続数を特定する方法はいくつかあります。最も一般的な方法は、mysqlコマンドラインを介する方法です。
threads_connected変数を使用して、接続数の出力を見ることができます。
また、サーバー内で実行中のスレッドセットによって現在実行されている操作を示すshow processlistコマンドも使用できます。
