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


8

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

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

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

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

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

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

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

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


2015年にVB6を使用するための+1!
raphael75

私が見つけたこのリンクを参照してください:superuser.com/questions/1364906/…私はそれで私の問題を解決します。
FarHooD 2018年

回答:


2

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

1)user @ 'xxxx'などのリモートアクセスを持つユーザーが作成されました

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

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

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


0

おそらくこれはネットワークの問題であり、データベースサービスプロバイダーはファイアウォール(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から次を使用した場合の出力は何ですか

1
Windowsではtelnetを使用できない可能性があります。PowershellPS C:\ Windows \ system32> New-Object System.Net.Sockets.TcpClient( "ip_mysql_server"、3306)を使用してください。クライアント:System.Net.Sockets.Socket使用可能:78接続済み: True <==これは、サーバーに到達できることを示しますExclusiveAddressUse:False ReceiveBufferSize:65536 SendBufferSize:64512 ReceiveTimeout:0 SendTimeout:0 LingerState:System.Net.Sockets.LingerOption NoDelay:False
user906489

0

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

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

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

iptablesを確認する


0

最初に、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';

これがお役に立てば幸いです。



-1

一部のホスティングプロバイダーは、セキュリティ上の理由により、デフォルトで彼のMySqlサーバーへのリモートアクセスをブロックしています。リモートアクセスサービスのブロックを解除する必要がある場合は、このサービスのブロックを解除するように依頼してください。

それ以外の場合は、ローカルホストとしてアプリをローカルでテストし、これが正常に機能する場合は、アプリのホスト名などのデータベースパラメータを変更し、ウェブホスティングサーバーにアップロードすると、正常に機能します!!!。

データベース設計がローカルデータベース設計と照合することに注意してください。これは非常に重要です!!!

これがお役に立てば幸いです。


2
彼らは毎秒の試みをブロックするだけだと思いますか?
dezso

-1

mariadbユーザーに追加する2つのこと:

1)my.cnfも私たちのためです=>そこで私はbind-address = 127.0.0.1行を見つけました

2)my.cnfファイルを変更した後、サービスを再起動する必要があります

お役に立てれば

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.