web-dev-qa-db-ja.com

エラー2003(HY000):MySQLサーバーに接続できません(111)

この質問は、次の質問に関連しています。

ローカルマシンで新しいMySQL(5.1)サーバーを構成しています。データベースへのリモートアクセスを提供する必要があります。次の手順を実行しました。

  1. コメントbind-address my.cnf内:

    # bind-address      = 192.168.1.3
    
  2. 権限を付与:

    GRANT ALL PRIVILEGES ON *.* TO 'nickruiz'@'%' IDENTIFIED BY PASSWORD 'xxxx';
    
  3. ルーターでポート転送を設定する(TCPおよびUDP、ポート3306、192.168.1.3)
  4. ファイアウォールのiptablesを構成する

    Sudo iptables -I INPUT -p udp --dport 3306 -j ACCEPT
    
    Sudo iptables -I INPUT -p tcp --dport 3306 --syn -j ACCEPT
    
    Sudo iptables-save
    
  5. Mysqlサーバーを再起動しますSudo /etc/init.d/mysql restart

テストするとき、私は次を得る:

LAN:

mysql -h 192.168.1.3 -u nickruiz -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 95
Server version: 5.1.63-0ubuntu0.11.04.1 (Ubuntu)

リモート:

mysql -h 1xx.xx.4.136 -u nickruiz -p
ERROR 2003 (HY000): Can't connect to MySQL server on '1xx.xx.4.136' (111)

明らかに、グローバルIPアドレスを使用できなくなっている問題があります。

ノート:

  • 同じマシン上で、またリモートマシンからSSH経由でリモート接続をテストしてみました。
  • ISPから静的IPが提供されているかどうかはわかりません。

何か案は?

更新:telnetが機能していないようです。

telnet 192.168.1.3 3306
Trying 192.168.1.3...
Connected to 192.168.1.3.
Escape character is '^]'.
E
5.1.63-0ubuntu0.11.04.1,0g8!:@pX;]DyY0#\)SIConnection closed by foreign Host.
32
Nick Ruiz

リスニングポートを確認してください:

netstat -nat |grep :3306

それが表示される場合

 tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN 

リモート接続には問題ありません。

しかし、この場合、私はあなたが持っていると思う

tcp        0     192.168.1.3:3306            0.0.0.0:*               LISTEN 

リモート接続には問題ありません。ファイアウォールも確認する必要があります(centos/redhatの場合はiptables)

services iptables stop

テストまたは使用:

iptables -A input -p tcp -i eth0 --dport 3306 -m state NEW,ESTABLISHED -j ACCEPT
iptables -A output -p tcp -i eth0 --sport 3306 -m state NEW,ESTABLISHED -j ACCEPT

そして、リモート接続の許可を確認する別のこと:

GRANT ALL ON *.* TO remoteUser@'remoteIpadress' IDENTIFIED BY 'my_password';
13
Toi Lee

errno 111はECONNREFUSEDです。ルーターのDNATに何か問題があると思います。

ISPがそのポートをフィルタリングしている可能性もあります。

リモートホスト(つまり、FROMに接続しようとしているWebホスティングサーバー)がポート3306の発信トラフィックを許可していることを確認します。

この状況で(100)エラーが表示されました。 PC/Macからは接続できましたが、Webサイトからは接続できませんでした。 MySQLインスタンスはインターネット経由でアクセスできましたが、私のホスティング会社は私のウェブサイトがポート3306でデータベースに接続することを許可していませんでした。

ホスティング会社にウェブホスティングアカウントをポート3306の発信トラフィックまで開くように依頼すると、ウェブサイトはリモートデータベースに接続できます。

4
NickGPS
/etc/mysql$ Sudo nano my.cnf

私のために働く関連部分:

#skip-networking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = MY_IP

MY_IPは、ifconfigまたはcurl -L whatismyip.org |grep blueを使用して見つけることができます。

Mysqlを再起動して、新しい構成がロードされていることを確認します。

/etc/mysql$ Sudo service mysql restart
3
Cees Timmerman

リモートmysql dbに接続しようとしても同じ問題が発生しました。

Dbサーバーのファイアウォールを開いてトラフィックを許可することで修正しました:

Sudo ufw allow mysql
0
Dan King

あなたと同じ質問があります。wiresharkを使用して送信済みのTCP=パケットをキャプチャします。mysql binを使用してリモートホストを接続すると、リモートの3307ポート、それは/etc/mysql/my.cnfの私のファルートです、3307は別のプロジェクトmysqlポートですが、my.cnf [クライアント]部分の構成を変更し、-Pオプションを使用して3306ポートを指定するとOK。

0
dawncold

上記のようにバインドアドレスを正しく設定しましたが、mysqlサーバーの再起動(または再起動)を忘れました:) face Palm-それがこのエラーの原因です!

0
bsautner

パスワードに特殊文字が含まれる場合、''文字。したがって、dbに接続するには次を使用できます。

mysql -uUSER -p'pa$$w0rd'

私は同じエラーがあり、このソリューションはそれを解決しました。

0
maszynka

使用するシステムがCentOS/RedHatで、rpmがMySQLのインストール方法である場合、/ etc /フォルダーにmy.cnfがない場合は、次を使用できます。#whereis mysql #cd/usr/share/mysql/cp -f /usr/share/mysql/my-medium.cnf /etc/my.cnf

0
jammyWolf