Debianサーバーで実行されているMySQLインスタンスがあり、問題なくローカルに接続できます。ただし、リモートで接続することはできません。コマンドラインからこれを試行すると、次のエラーが表示されます。
ERROR 2003 (HY000): Can't connect to MySQL server on '<server-ip>' (110)
ユーザーをmysqlに 'user' @ '*'および 'user' @ 'localhost'として追加しました。このサーバーのskip-networkingはfalseに設定され、バインドアドレスはmy.cnfでコメント化されています。また、次のコマンドを使用して、iptablesでポート3306を開こうとしました。
/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT
以下は、iptables -Lを使用して取得したすべてのiptableファイアウォールルールのリストです。
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
REJECT tcp -- anywhere anywhere tcp dpt:auth reject-with icmp-port-unreachable
ACCEPT icmp -- anywhere anywhere icmp type 8 code 0 state NEW,RELATED,ESTABLISHED,UNTRACKED
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpt:ftp state NEW
ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpt:ssh state NEW
ACCEPT tcp -- anywhere anywhere tcp spts:1024:65535 dpt:www state NEW
ACCEPT tcp -- <my-server> anywhere tcp spts:1024:65535 dpt:mysql state NEW
ACCEPT tcp -- anywhere anywhere tcp dpts:49152:65534 state NEW
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
LOG all -- anywhere anywhere limit: avg 5/min burst 5 LOG level debug prefix `iptables denied: '
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql
LOG tcp -- anywhere anywhere tcp dpt:mysql LOG level debug
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
誰も私がここからどこに行くべきか考えていますか?
応答に基づいて、接続をブロックするデバイスがあなたとサーバーの間にあるかどうかを見つける必要があります。また、サーバーにログインしたときにそのサーバーのイーサネットアドレスで3306にtelnetできることを確認する必要があります...そうでない場合、おそらくイーサネットにバインドされたサービスを取得していないmy.cnf
... bind-address
パラメーターを参照してください。
MySQLサーバーの構成をチェックして、127.0.0.1にバインドされているかどうかを確認する必要があります。アプリが同じサーバー上にある場合にのみmysqlに接続できます。 webaminをインストールする簡単な方法があり、Webインターフェイスを介して制御できます。
これは3306ポートが閉じられているためである可能性があります。サーバーポートのステータスを確認してください
http://www.yougetsignal.com/tools/open-ports/
閉じていると表示されている場合、ポートを開くためにマシンの外側からアクセスできないことを意味します
ufw-複雑でないファイアウォール
Ubuntuのデフォルトのファイアウォール設定ツールはufwです。 ufwの使用方法の例を以下に示します。
まず、ufwを有効にする必要があります。ターミナルプロンプトから次を入力します。
Sudo ufw enable
ポートを開くには(mysql):
Sudo ufw allow 3306
ファイアウォールのステータスを表示するには、次を入力します。
Sudo ufw status
私にとっては、これは/etc/default/iptables
ファイルのポート3306を有効にして、以下の特定の行のコメントを外すことにより、任意のホストからの着信トラフィックを許可することでした。
#-A INPUT -p tcp --dport 3306 -j ACCEPT
VPN接続を使用してリモートデータベースサーバーに接続し、この種のエラーが発生した場合は、2つの簡単な手順を確認してください...
1)Windowsマシンで、「コントロールパネル\ネットワークとインターネット\ネットワーク接続」のパスに移動し、ローカルエリアネットワークを右クリックして、プロパティに移動します。 [TCP/IPv4]をクリックして、プロパティに移動します。 IPとDNSサーバーを確認します(DHCPを使用するかどうか)。
2)この後、マシンを再起動してもう一度チェックアウトしてください。
これがうまくいくことを願っています。私の場合はうまくいきます。
注:すべての設定が正しいことを確認してください。この答えは面白いですが、私の場合はうまくいきます:)
ありがとう!