1

私はコンピューター A にいて、mysql を実行していて、それに接続できA~ $ mysql -u punkish -p databaseます。

mysql も実行されているコンピューター B にアクセスできます。sshキーペアを設定して、ポート2200経由でBにsshできます。一度入ると、次のようにdbに接続できます

A~ $ ssh -p 2200 punkish@B
B~ $ mysql -u punkish -p database

ただし、コンピューター A のポート 3307 で mysql に対して行われたすべての要求が実際には B のポート 3306 に送信されるように、コンピューターで ssh 経由のポート転送をセットアップしたいと考えています。 mysql ですが、トンネル経由では実行できません。だから、私は次のことをします

A~ $ ssh -p 2200 -L 3307:B:3306 punkish@B
B~ $

上記により、B に直接ログインできます。トンネルが確立されているかどうかはわかりませんが、確立されていると想定しています。ただし、以下は失敗します(別の端末で

A~ $ mysql -P 3307 -u punkish -p
Enter password:
ERROR 1045 (28000): Access denied for user 'punkish'@'localhost' (using password: YES)

ここで興味深いのは、Sequel Pro (Mac OS X 用のデスクトップ MySQL クライアント) と呼ばれる別の GUI プログラムがあり、ssh 経由で mysql@B に問題なく接続できることです。だから、私は何かがうまくいくことを知っています...方法がわからないので、別のGUIプログラムで有効にできるかもしれません。

4

1 に答える 1

2

ホスト名を指定しない場合、mysql は通常、ソケット ファイルを使用しようとします。そのため、mysql コマンドの一部として指定します-h 127.0.0.1(localhost とは言っていないことに注意してください。扱いが異なります)。これは基本的に、ソケット ファイル接続の代わりに TCP 接続を強制します。

于 2011-07-08T19:21:27.707 に答える