2012-01-10 10 views
0

私は1つのホストを持つWebサーバを持っています。別のホストでデータベースを使いたいと思います。 私はこれを行うためにポート転送を使用したいのですが、すでにリモートサーバにmysql_connectを使用してポート転送とPHPを使用する

ssh -P -fg -L23307:myserver.net:3306 [email protected] sleep 1d 

を使用して転送ポートを設定している誰かがどのようにチェックするように私に言うことができる場合が、これは素晴らしいことだろうと、(正常に動作しているようです)しかし、私はそのポートを介してMySQLに接続するPHPを取得することはできません - それは(それが実行されていない)独自のローカルMySQLデータベースに接続しようとし続けます。

$mlink = mysql_connect("localhost:23307", "myusername", "mypassword"); 
mysql_select_db('mydatabase', $mlink) or die ("Error - cannot connect to database localhost:23307.<br />Error: ".mysql_error()); 

わかりましたように、私は複雑なことは何もしていないので、なぜローカル接続しようとしていますか?

+0

mysqlクライアントユーティリティを使用してみてください。それが失敗した場合は、あなたのホストに 'telnet'して何か聞こえるかどうか確認してください。 – mindas

答えて

1

「ファイアウォールでポートを開いたと言うと、人々を信頼しないでください」という答えが出ています。

誰かが欲しいですか?

0

私は同じ問題に直面しました。しかし、ファイアウォールの問題はありませんでした。実際、SSHトンネリングを行っているときは、ファイアウォールの設定を変更する必要はありません。

mysql_connect()パラメータリストで 'localhost'を '127.0.0.1'に変更して解決しました。 Refernceリンク - https://blog.rjmetrics.com/2009/01/06/php-mysql-and-ssh-tunneling-port-forwarding/

抜粋 - MySQLの

を経由して接続

それは私たちのハードワークのすべてが報わ参照する時間です。 MySQLのホストが同じである127.0.0.1、あること

$のmysql -u SQLUSER -p -h 127.0.0.1 -P 3307

お知らせ:私たちのローカルマシンから、我々は単に以下のコマンドを発行しますリモートサーバーのmy.cnfファイルのバインドアドレス値。最終的に転送されたTCPポートにアクセスしているのでlocalhostではなくこの値を使用することが重要です。localhostを指定すると、MySQLはTCPを完全に無視し、ローカルソケット経由でローカルサーバに接続します。したがって、接続を確立するためにポート3307を指定したことに注意してください。これは転送するTCPポートです。

関連する問題