web-dev-qa-db-ja.com

MySQLはSSHトンネル経由で接続できません-接続が拒否されました

SSHトンネルを使用して、MySQL GUI(重要な場合はSequel Pro)からMySQLに接続しようとしています。ただし、次のエラー(mysql.log)が発生し続けます。

[注] dbへの接続98を中止しました: 'example' user: 'example_user' Host: 'localhost'(通信パケットの読み取り中にエラーが発生しました)

私の接続設定は次のようになります。

  • SSHホスト:example.com
  • SSHポート:22
  • SSHユーザー:example_user
  • SSHパス:********
  • DBホスト:127.0.0.1
  • DBユーザー:example_user
  • DBパスワード:*******
  • DB名:例
  • DBポート:3306

問題なくSSHに接続できます。 SSH内からMySQLに接続することもできます(mysql -u example_user -p -h 127.0.0.1を使用)

ただし、トンネリングは機能していません。 sshd_configにAllowTcpForwarding yesがあります。 MySQL設定にはbind-address = 127.0.0.1があります。

サーバーで16.04 LTSおよびMySQL Community Editionを使用しています。

私は何が間違っているのですか?私がこの問題を見たのはこれが初めてです。

2
Gasim

例として、ワークステーションでコマンドを使用して複数のトンネルを作成できます。

ssh -L 10080:127.0.0.1:80 -L 10006:127.0.0.1:3306 user@server

127.0.0.1-サーバーから接続するIPアドレストンネルの宛先、80および3306宛先ポート、10080および10006-ローカルワークステーションのポート。これにより、サーバーのローカルホストインターフェイスを介してMySqlサーバーおよびHttpサーバーに接続できるようになります。ワークステーションでコマンドmysql -p -u db_user -P 10006 -h 127.0.0.1 database_nameを実行して、MySqlサーバーに接続します。 127.0.0.1からのみ許可されているPhpMyAdminWebインターフェイスに接続できます。これを行うには、ブラウザにアドレスhttp://127.0.0.1:10080を入力するだけです。

2
Mikhail Khirgiy

私も同様の問題を抱えていましたが、これにより answer 、解決策は「any」ユーザーを削除することでした。

MySQLは、ローカルホスト経由で接続しているユーザーと127.0.0.1の違いを認識しているようです。これは、正しく理解していれば問題の一部です。

0
Jade Steffen