現象記述
CVMからTDSQL-C for MySQLのプライベートアドレスを介してインスタンスに接続しましたが、接続に失敗しました。
説明:
TDSQL-C for MySQL への接続およびログインには複数の方法があります。例えば、DMC データベース管理コンソールログイン、内部ネットワーク接続、外部ネットワーク接続、および CCN 接続など。異なる接続方法に必要な接続条件は異なります。例えば、お客様は外部ネットワークアドレス経由で TDSQL-C for MySQL に接続する必要があります。コマンドでデータベースに接続する場合、コマンドラインで入力するのがインスタンスの内部ネットワークアドレスであると、接続に失敗します。例えば、お客様が Lighthouse を購入した場合、CCN を介してネットワークを接続していないと、直接コマンドで TDSQL-C for MySQL に接続すると、接続に失敗します。したがって、接続に失敗した場合、まず クラスタ接続 > 概要 の接続方法とアプリケーションシナリオを参照して、接続条件が正しく使用されているかどうかを自己確認することをお勧めします。 原因のまとめ
|
| パスワードエラー。 |
| CVMとTDSQL-C for MySQLは同一リージョン内にありますが、異なるVPCネットワークに属しています。 |
| CVMとTDSQL-C for MySQLは同一リージョン内にありませんが、異なるVPCネットワークに属しています。 |
| CVMのセキュリティグループ設定が間違っています。 |
| TDSQL-C for MySQLのセキュリティグループ設定が間違っています。 |
| データベースアカウントはアクセスする具体的なホストアドレスに制限をかけています。 |
| 接続コマンドエラー。 |
| コマンドラインまたは設定ファイル内のIPとポートに誤りがあります。 |
| TDSQL-C for MySQLのストレージ容量が満杯、最大接続数が上限に達している、timeoutパラメータ設定の問題、「アベイラビリティーゾーン切り替え状態」にあるなど。 |
TDSQL-C for MySQLの稼働状態 | TDSQL-C for MySQLインスタンスは隔離中であり、ごみ箱から復元することが可能です。 |
CVMインスタンスのステータス | CVMインスタンスが隔離中またはシャットダウン中の場合、コンソールから復元または起動してください。 |
解決方法
パスワードの問題:パスワードエラー
ネットワーク問題1:CVMとTDSQL-C for MySQLは同一リージョン内にありますが、異なるVPCネットワークに属しています
デフォルトでは、CVMとTDSQL-C for MySQLのネットワークタイプが両方ともVPCネットワークであり、かつ両者が同一VPCネットワーク内にある場合にのみ、プライベートネットワーク経由で直接通信できます。同一リージョン内で異なるVPCに存在する場合、TDSQL-C for MySQLのネットワークをCVMが配置されているVPCネットワークに切り替えることで、CVMとTDSQL-C for MySQL間の相互通信を実現できます。操作についてはネットワーク変更を参照してください。 ネットワーク問題2:CVMとTDSQL-C for MySQLは同一リージョン内にありません、異なるVPCネットワークに属しています
CVMとTDSQL-C for MySQLが同一リージョン内にない場合、異なるVPCネットワークに属しているため、CVMはプライベートネットワーク経由でTDSQL-C for MySQLに直接接続できません。TDSQL-C for MySQLと同じVPCのCVMを使用して接続することをお勧めします。TDSQL-C for MySQLと同じリージョン内にCVMインスタンスがない場合、CVM購入ページでTDSQL-C for MySQLと同じリージョンおよび同じVPCネットワークのCVMインスタンスを新規作成できます。 セキュリティグループ設定問題1:CVMセキュリティグループ設定の誤り
CVMでTDSQL-C for MySQLに接続する場合、CVMのセキュリティグループでアウトバウンドルールを設定する必要があります。アウトバウンドルールの宛先設定が0.0.0.0/0ではなく、かつプロトコルとポートがALLでない場合、TDSQL-C for MySQLのプライベートIPとポートをアウトバウンドルールに追加する必要があります。
1. セキュリティグループコンソールにログインし、セキュリティグループ名をクリックすると、CVMにバインドされているセキュリティグループの詳細ページに移動します。
2. アウトバウンドルールタブを選択し、ルール追加をクリックします。
「タイプ」でMySQL(3306)を選択し、「ターゲット」にTDSQL-C for MySQLのプライベートIPアドレス(範囲)を入力し、「ポリシー」で許可を選択します。
セキュリティグループ設定の問題2:TDSQL-C for MySQLのセキュリティグループ設定が間違っています
指定されたCVMがTDSQL-C for MySQLに接続する場合、TDSQL-C for MySQLのセキュリティグループでインバウンドルールを設定する必要があります。インバウンドルールの送信元設定が0.0.0.0/0ではなく、かつプロトコルとポートがALLでない場合、TDSQL-C for MySQLのプライベートIPとポートをインバウンドルールに追加する必要があります。
1. セキュリティグループコンソールにログインし、セキュリティグループ名をクリックすると、TDSQL-C for MySQLにバインドされているセキュリティグループの詳細ページに移動します。
2. インバウンドルールタブを選択し、ルール追加をクリックします。
3. 接続を許可するIPアドレス(範囲)および開放が必要なポート情報(TDSQL-C for MySQLのプライベートネットワークポート)を入力し、許可を選択します。
4. 「タイプ」でMySQL(3306)を選択し、「ソース」にTDSQL-C for MySQLのプライベートIPアドレス(範囲)を入力し、「ポリシー」で許可を選択します。
アカウントに権限付与されたホストアドレスの問題:データベースアカウントのアクセスが特定のホストアドレスに制限されています
データベースアカウントは、セキュリティグループやサブネットなどのネットワーク環境制限に加えて、TDSQL-C for MySQL自身のアカウントシステムによる制限も受けます。データベースアカウントが特定のホストアドレスを指定している場合、他のアドレスからTDSQL-C for MySQLに接続することはできません。
TDSQL-C for MySQLコンソールを通じてデータベースアカウントに許可されたホストアドレスを変更することで、データベースへの接続を制限し、データベースの接続セキュリティを向上させることができます。
2. アカウント管理ページを選択し、ホストを変更する必要があるアカウントを見つけ、操作列でその他 > ホスト変更を選択します。
3. ポップアップダイアログで新しいホストアドレスを入力し、確定をクリックすることで、アカウントに許可されたホストアドレスを変更できます。
説明:
ホストアドレスはIP形式のアドレスをサポートし、%(IP範囲制限なしを意味する)の入力も可能です。複数のホストは区切り文字で分割でき、区切り文字は改行、スペース、および; , |をサポートします。
例1:%を入力すると、IP範囲制限を行わないことを意味します。つまり、すべてのIPアドレスのクライアントがこのアカウントを使用してデータベースに接続することが許可されます。
例2:10.5.10.%を入力すると、IP範囲が10.5.10.%内にあるクライアントがこのアカウントを使用してデータベースに接続することが許可されることを意味します。
接続の構文エラー:接続コマンドが正しくありません
接続コマンドに誤りがないか確認し、標準的なプライベートネットワーク接続コマンドを参照してください:
mysql -h <内部ネットワーク IP アドレス> -u <ユーザー名、デフォルトはroot> -P <ポート番号、デフォルトは3306> -p
<内部ネットワーク IP アドレス>:ターゲット TDSQL-C for MySQL データベースインスタンスのプライベートネットワークアドレスに置き換えを行います。TDSQL-C for MySQLコンソールのクラスタ詳細ページでプライベートネットワークアドレスを確認できます。 説明:
例えばプライベートネットワークアドレスが10.16.0.11:3306の場合、<内部ネットワーク IP アドレス>を10.16.0.11に置き換えを行います。
<ユーザー名、デフォルト root>:ターゲット TDSQL-C for MySQL データベースインスタンスのアカウント名に置き換えてください。デフォルトのアカウント名は root です。
<ポート番号、デフォルト3306>:ターゲット TDSQL-C for MySQL データベースインスタンスのプライベートネットワークポート番号に置き換えを行います。デフォルトは3306です。変更した場合は、変更後のポート番号に準じてください。
IPとポートの問題:コマンドラインまたは設定ファイルのIPとポートに誤りがあります
コマンド接続でデータベースにログインする際は、インスタンスの内部ネットワークIPとポート番号が正しいかどうかを確認してください。内部ネットワークIPとポート番号は、TDSQL-C for MySQLコンソールのクラスタ詳細ページで確認できます。 TDSQL-C for MySQLインスタンスの問題:インスタンスディスクの満杯、最大接続数の上限到達、timeoutパラメータ設定の問題など
TDSQL-C for MySQLインスタンスのストレージ容量がいっぱいになると、データベースへの接続に影響する可能性があります。ストレージ容量の拡張を推奨します。操作についてはストレージ容量の調整を参照してください。 「ERROR 1040(00000):Too many connections」というメッセージが表示された場合、クラウドデータベースインスタンスの現在の最大接続数が制限を超えていることを示します。一般的な原因と解決策:
i. sleepスレッド数が多い場合、コンソールでwait_timeoutおよびinteractive_timeoutパラメータ値を引き下げることを推奨します。操作については設定インスタンスパラメータを参照してください。
ii. sleepスレッド数が少なく、低速クエリの蓄積もない場合、コンソールでmax_connectionsパラメータ値を引き上げることを推奨します。操作については設定インスタンスパラメータを参照してください。 インスタンスが「アベイラビリティーゾーン切替中」状態かどうかを確認してください。インスタンスに接続する際にTDSQL-C for MySQLが「アベイラビリティーゾーン切替中」状態の場合、接続に失敗します。切替完了まで待機した後、改めてコマンドで接続してください。