VB6でアプリケーションを開発し、アプリケーションのデータを保存するためにオンラインのMySQLデータベースサーバーを使用しています。
初めてデータベースサーバーに接続しようとしたときは成功しましたが、アプリケーションを閉じて再起動すると、次のようになります。
MySQLサーバーに接続できません(10060) "
しばらくして(約30分)、データベースに再び正常に接続できます。
オンラインMySQLデータベースサービスを提供する技術担当者に尋ねたところ、次の3つの理由がわかりました。
最初の2つの理由を解決する方法、またはそれらが問題の原因であると判断する方法を教えてください。または、そこにリストされていない別の問題があるのでしょうか?
次のことを確認する必要があります。
1)作成されたユーザー(例:user@'x.x.x.x ')
2)2つのマシンからの接続があります(たとえば、お互いにpingしたり、別の方法で相互にアクセスしたりできます)、2つのマシン間でポートが開かれている
3)my.ini/my.cnf
次のようなブロッキング接続パラメーターがあります:bind-address=a.a.a.a
またはskip-networking
4)他のマシンから接続しようとしたときにサービスが稼働している
私は丸一日かけて頭を叩いてこれを理解しようとしましたが、Windowsネットワークがすべての着信接続をブロックする プライベートではなくパブリック に設定されていることがわかりました。これが誰かを助けることを願っています。
これはおそらくネットワークの問題であり、データベースサービスプロバイダーはファイアウォール(iptables)で新しいルールを作成する必要があります。それでも、プロバイダーからいくつかのことを確認する必要があります。動作が安定していないため(接続できる場合もあれば、接続できない場合もあります)。したがって、それはユーザー特権の問題ではありません(GRANT ALL ON ...)
Telnet(IP)の出力を提供します:ポート
前回同じ問題がありましたが、当時はiptablesが原因です。
サーバーが再起動すると、iptablesルールはデフォルトになり、特定のポートにフィルターを適用しませんでした。
iptablesを確認してください
最初に、MySQLサーバーに接続しようとしている現在のホスト上のユーザーに適切な権限を付与したかどうかを確認します。
select * from mysql.user where Host="Host_name"\G;
grant all on *.* to 'user'@'Host_name' identified by 'Password';
これがあなたのお役に立てば幸いです。