web-dev-qa-db-ja.com

リモートMySQL接続が失敗する(10060)-「domainname.com(10060)上のMySQLサーバーに接続できません」

VB6でアプリケーションを開発し、アプリケーションのデータを保存するためにオンラインのMySQLデータベースサーバーを使用しています。

初めてデータベースサーバーに接続しようとしたときは成功しましたが、アプリケーションを閉じて再起動すると、次のようになります。

MySQLサーバーに接続できません(10060) "

しばらくして(約30分)、データベースに再び正常に接続できます。

  • すべてのMySQLシステムとconnection_timeoutwait_timeoutなどのグローバル変数に最大値を指定しました。
  • MySQLユーザーにすべての権限を付与しました。
  • コンピュータのファイアウォールがオフになっています。
  • アプリケーションを閉じると、すべての接続が適切に閉じられます。

オンラインMySQLデータベースサービスを提供する技術担当者に尋ねたところ、次の3つの理由がわかりました。

  1. 接続しようとしているローカルマシンがサーバーでホワイトリストに登録されていません。
  2. ユーザーの最大接続数を超えました。
  3. MySQLサーバーはその時点でダウンしていました(ただし、サーバーはダウンしていないとのことです)。

最初の2つの理由を解決する方法、またはそれらが問題の原因であると判断する方法を教えてください。または、そこにリストされていない別の問題があるのでしょうか?

8
Ashok Gujjar

次のことを確認する必要があります。

1)作成されたユーザー(例:user@'x.x.x.x ')

2)2つのマシンからの接続があります(たとえば、お互いにpingしたり、別の方法で相互にアクセスしたりできます)、2つのマシン間でポートが開かれている

3)my.ini/my.cnf次のようなブロッキング接続パラメーターがあります:bind-address=a.a.a.aまたはskip-networking

4)他のマシンから接続しようとしたときにサービスが稼働している

2
Ahmad Abuhasna

私は丸一日かけて頭を叩いてこれを理解しようとしましたが、Windowsネットワークがすべての着信接続をブロックする プライベートではなくパブリック に設定されていることがわかりました。これが誰かを助けることを願っています。

0
Miro

これはおそらくネットワークの問題であり、データベースサービスプロバイダーはファイアウォール(iptables)で新しいルールを作成する必要があります。それでも、プロバイダーからいくつかのことを確認する必要があります。動作が安定していないため(接続できる場合もあれば、接続できない場合もあります)。したがって、それはユーザー特権の問題ではありません(GRANT ALL ON ...)

  1. ファイアウォールのブロック解除/例外リストにMySQLリスニングポートが含まれていることを確認してください。最も一般的には3306です。
  2. My.cnfのmax_connectionパラメータを増やしてみてください
  3. My.cnfで、 'skip-networking'がコメント化されていることを確認します。また、bind-address = 127.0.0.1
  4. コマンドラインから次を使用した場合の出力は何ですかtelnet ip_mysql_server 3306
0

Telnet(IP)の出力を提供します:ポート

前回同じ問題がありましたが、当時はiptablesが原因です。

サーバーが再起動すると、iptablesルールはデフォルトになり、特定のポートにフィルターを適用しませんでした。

iptablesを確認してください

0
s_ramesh

最初に、MySQLサーバーに接続しようとしている現在のホスト上のユーザーに適切な権限を付与したかどうかを確認します。

  1. 最初にホスト名を確認してください
  2. 次に、「root」などのスーパーユーザーを介してMySQLにログインします。
  3. 権限が提供されているかどうかを確認しますselect * from mysql.user where Host="Host_name"\G;
  4. 最初にすべての権限を付与してから、もう一度接続してみてください。
grant all on *.* to 'user'@'Host_name' identified by 'Password';

これがあなたのお役に立てば幸いです。

0
Rk Singh