MySQLをアクセスするためのSSHトンネル

 MySQLを使用する場合、次のように遭遇する多くの回:

1.情報がより重要である、暗号化通信が望まれています。
2.なポート3306などの一部のポートは、ルータが無効になっています。

より直接的な解決策の最初の質問は、MySQLのコードを変更、またはいくつかの証明書を使用することですが、このアプローチは明らかに非常に単純ではありません。

ここで紹介する別の方法は、リモートのMySQLを接続するためにSSHチャネルを使用することで、非常に簡単です。

SSHトンネルを確立

あなただけがローカルで次のコマンドを入力する必要があります。

SSH -fNg -L 3307:127.0.0.1:3306 [email protected]

 

コマンドは、リモートコマンド(-N)を実行する(-f)バックグラウンドに移動しない、MYUSERとしてremotehost.comにログインSSH伝え、ポート転送(-L次に、localport:ローカルホスト:次に、remoteport)を設定します。この場合、我々はremotehost.com上のポート3306にローカルホスト上のポート3307を転送します。

MySQLを接続する2つの

さて、あなたは同じローカルデータベースへのアクセスと同様に、ローカル介してリモートデータベースに接続することができます。

mysqlの -h 127.0.0.1 -P 3307 -u DBUSER -pデシベル

 

コマンドは(remotehost.com:3306にssh経由で転送されます)ポート3307をlocalhostに接続するために、ローカルのMySQLクライアントに指示します。クライアントとサーバー間のデータ交換は、現在暗号化されたssh接続を介して送信されます。

やMySQLクエリブラウワー3307クライアントアクセスポートを使用しています。

PHPと同様に、アクセス:

1 <?PHP
 2  $ smysql = にmysql_connect( "127.0.0.1:3307"、 "DBUSER"、 "PASS" );
3  mysql_select_db( "DB"、$のsmysql )。
4?>

 

デーモンそれを作ります

必ず接続が失敗した場合に、起動とrespawns上で動作させるために迅速かつ汚い方法は、/ etc / inittabファイルに追加し、initプロセス(、ええと、カーネル)行きそれを維持することです。

各クライアントの/ etc / inittabファイルに以下を追加します。

SM:345:復活します。/ usr / bin / sshの-ng -L 3307:127.0.0.1:3306 [email protected]

そして、それはあなたがする必要があるすべてでなければなりません。それはコンフィギュレーションをリロードするために(-HUP 1を殺す)HUP信号initを送信します。それをオフにするには、再びラインとHUPのinitをコメントアウト。

おすすめ

転載: www.cnblogs.com/wadhf/p/11704136.html