回答:
ここの誰かがそれがファイアウォールの問題であるかもしれないと示唆しています:
この問題が発生し、ファイアウォールであることがわかりました。PCTools Firewall Plusを使用していますが、MySQLへのフルアクセスが許可されていませんでした。一度変えたら大丈夫だった。お役に立てば幸いです。
それでいいですか?
また、誰かここでは、 MySQLサーバを効果的に「外」から接続でき遮断ループバックIP(127.0.0.1 / localhostの)にバインドされているので、それはあるかもしれないことを示唆しています。
この場合は、スクリプトをWebサーバー(おそらくMySQLサーバーも実行している)にアップロードし、サーバーホストを「localhost」として保持する必要があります。
my.cnfという名前のmysql設定ファイルを開き、「bind-address」を見つけます。ここで、設定(127.0.0.1またはlocalhost)を実際のサーバーIP(mysql_connect関数で使用しているIP)に置き換えます。
これは間違いなく問題を解決します。
ありがとう
127.0.0.1適切な場所にバインドして、他のホストから直接アクセスできないようにすることが一般的に望ましい場合があることに注意してください。これにより、リモートのブルートフォース攻撃が防止され、セキュリティの問題がネットワークに公開されることはありません。アプリケーションが同じマシンにある場合(これは非常に一般的なホスティング設定です)、127.0.0.1respを使用します。localhostmysqlホストとして使用すると、サービスを外部インターフェースにバインドしてmysqlホストとして使用するのと同じように機能します。アプリケーションが他の場所にある場合は、可能であれば内部ネットワークを使用してください。
1)MySQLへのリモート接続を許可します。ファイルを編集:
>sudo nano /etc/mysql/my.cnf
コメント行:
#bind-address = 127.0.0.1
MySQLを再起動します。
>sudo service mysql restart
2)リモート接続用のユーザーを作成します。
>mysql -uroot -p
CREATE USER 'developer'@'localhost' IDENTIFIED BY 'dev_password';
CREATE USER 'developer'@'%' IDENTIFIED BY 'dev_password';
GRANT ALL ON *.* TO 'developer'@'localhost';
GRANT ALL ON *.* TO 'developer'@'%';
3)私の場合、Ubuntuを使用してWindowsからVirtualBoxマシンにリモートで接続する必要があります。そのため、iptablesでポート3306を許可する必要があります。
>iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
FLUSH PRIVILEGES新しいユーザーを作成した後を忘れないでください。
新しいスレーブサーバーを設定するときにこの問題がありました。スレーブサーバーのIPアドレスがマスターサーバーにないことがわかりました/etc/hosts.allowファイル。IPアドレスを追加すると、マスターサーバーに接続できます。
とを使用hosts.allowしhosts.denyてアクセスを制御していることに注意してください。
私はこの問題を抱えていて、MySQLが実行されていたポートを前のシステム管理者が変更したことが原因でした。MySQL Workbenchはデフォルトの3306に接続しようとしましたが、サーバーは20300で実行されていました。
MySQLワークベンチから接続すると、まったく同じエラーが発生しました。修正方法は次のとおりです。/etc/my.cnf構成ファイルで、bind-address値がサーバーのIPアドレスに設定されています。これは、レプリケーションをセットアップするために実行する必要がありました。とにかく、私は2つのことをすることでそれを解決しました:
例えば
CREATE USER 'username'@'bind-address' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON schemaname.* TO 'username'@'bind-address';
FLUSH PRIVILEGES;
私にとっての問題は、DNSクエリがサブネット内のFWによってブロックされたことでした。解決策は、MySQL内のDNSルックアップを無効にすることでした。
このエラーは、サーバーが見つかると予想していたポートから応答を受信しなかったことを意味します。原因は、(多くの理由の1つが原因で)間違ったマシンに接続することから、サーバーが予期されたポート上にないことまでさまざまです。
/etc/mysql/my.cnfでサーバーがバインドされているポートを確認します。それはあなたの接続ステートメントにあるものに対応していますか?それらが一致する場合は、サーバー自体から、およびクライアントを実行しているマシンのコマンドラインからmysqlに接続してみてください。ある場所で機能し、別の場所で機能しない場合は、ファイアウォール/ルーターの構成に問題がある可能性があります。
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)は、Lost connection to MySQL serverメッセージではなく応答が返されます。
その問題は私にはかなり愚かだった。
以前はAWS EC2 Ubuntuマシン(MariaDBは当面ローカルにインストールされています)でも同じ問題が発生したため、SSHトンネリングを作成しようとしたところ、同じ問題が発生しました。だから私はターミナル上でトンネルをsshしようとしました:
ssh -L13306:127.0.0.1:3306 root@ip.address -i my/private/key.pem
そしてそれは私にこれを伝えました:
「root」ではなく「ubuntu」でログインしてください。
私のssh構成と同じように、sshユーザーをrootからubuntuに変更しましたが、うまく接続しました。
SSH接続ユーザーを確認してください。
私はこれを監督したので、これは私の時間の30分も過ぎているので、これがあなたにとって役立つことを願っています。
私にとって、設定ファイルは「/etc/mysql/mysql.conf.d/mysqld.cnf」で見つかり、バインドアドレスをコメントアウトすることで解決しました。
ここでわかるように: スキップネットワーキングの代わりに、デフォルトではlocalhostのみをリッスンするようになりました。これは、互換性が高く、安全性が低くありません。
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnfを編集し、代わりにbind-address = 111.112.113.114を使用しましたbind-address = 127.0.0.1。SSHトンネルの設定は、hostpresto.com / community / tutorials /…で説明されているように設定されます。ありがとう!
この同じ問題に遭遇し、Bind Addressをやり取りして無駄にした。私にとっての解決策は、特権をフラッシュすることでした。
mysql> FLUSH PRIVILEGES;
私にとってbind-address = 0.0.0.0はmysql/my.cnfうまくいきました。基本的にすべてのアドレス(ただし、1つのポート)をリッスンします。
そして、サーバーを再起動することを忘れないでください: systemctl restart mysql
私も同じ問題に直面しました。AllowTcpForwarding Yesを確認して設定しようとしましたが、sshd_configに見つからなかったため、何の助けもありませんでした。sshd_configまたはmy.cnfを変更しませんでした。sshホスト名がNOTであることを確認してください mysqlホスト名と同じで(localhostを使用)。
ワークベンチで+を選択して新しい接続を追加し、以下を設定します。
接続をテストします。成功したらOK.Violaを押してください!
同様のエラーが発生しました(awsでMYSql Workbenchを介してMYSQLに接続する)。以前はうまく接続していたのですが、突然機能しなくなり、再び機能しなくなりました)。私の接続は、キーファイルで保護されたSSH経由でした。
私がタイムアウトしていたことがわかりました。そのため、SQL接続のタイムアウトを(デフォルトの10から)30秒に増やして、もう一度やり直しました。試すこと(同様の設定をしている場合)
mysql -u [username] -p [database]か?これにより、ユーザー権利の問題などがチェックされます。