この質問は、次の質問に関連しています。
ローカルマシンで新しいMySQL(5.1)サーバーを構成しています。データベースへのリモートアクセスを提供する必要があります。次の手順を実行しました。
コメントbind-address
my.cnf内:
# bind-address = 192.168.1.3
権限を付与:
GRANT ALL PRIVILEGES ON *.* TO 'nickruiz'@'%' IDENTIFIED BY PASSWORD 'xxxx';
ファイアウォールの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
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アドレスを使用できなくなっている問題があります。
ノート:
何か案は?
更新: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.
リスニングポートを確認してください:
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';
errno 111はECONNREFUSEDです。ルーターのDNATに何か問題があると思います。
ISPがそのポートをフィルタリングしている可能性もあります。
リモートホスト(つまり、FROMに接続しようとしているWebホスティングサーバー)がポート3306の発信トラフィックを許可していることを確認します。
この状況で(100)エラーが表示されました。 PC/Macからは接続できましたが、Webサイトからは接続できませんでした。 MySQLインスタンスはインターネット経由でアクセスできましたが、私のホスティング会社は私のウェブサイトがポート3306でデータベースに接続することを許可していませんでした。
ホスティング会社にウェブホスティングアカウントをポート3306の発信トラフィックまで開くように依頼すると、ウェブサイトはリモートデータベースに接続できます。
/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
リモートmysql dbに接続しようとしても同じ問題が発生しました。
Dbサーバーのファイアウォールを開いてトラフィックを許可することで修正しました:
Sudo ufw allow mysql
あなたと同じ質問があります。wiresharkを使用して送信済みのTCP=パケットをキャプチャします。mysql
binを使用してリモートホストを接続すると、リモートの3307ポート、それは/etc/mysql/my.cnf
の私のファルートです、3307は別のプロジェクトmysqlポートですが、my.cnf
[クライアント]部分の構成を変更し、-P
オプションを使用して3306ポートを指定するとOK。
上記のようにバインドアドレスを正しく設定しましたが、mysqlサーバーの再起動(または再起動)を忘れました:) face Palm-それがこのエラーの原因です!
パスワードに特殊文字が含まれる場合、''
文字。したがって、dbに接続するには次を使用できます。
mysql -uUSER -p'pa$$w0rd'
私は同じエラーがあり、このソリューションはそれを解決しました。
使用するシステムがCentOS/RedHatで、rpmがMySQLのインストール方法である場合、/ etc /フォルダーにmy.cnfがない場合は、次を使用できます。#whereis mysql #cd/usr/share/mysql/cp -f /usr/share/mysql/my-medium.cnf /etc/my.cnf