簡體   English   中英

在mysql_connect上使用端口轉發和php到遠程服務器上

[英]Using port forwarding and php with mysql_connect onto a remote server

我有一台具有一台主機的Web服務器,我想在另一台主機上使用該數據庫。 我想使用端口轉發來做到這一點,並且已經使用以下命令設置了轉發端口

ssh -P -fg -L23307:myserver.net:3306 myname@myserver.net sleep 1d

這似乎工作正常(盡管有人告訴我如何檢查,那很好),但是我無法讓PHP通過該端口連接到MySQL-它一直嘗試連接到自己的本地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() );  

如您所見,我沒有做任何復雜的事情,為什么它一直嘗試在本地連接?

因此,答案是“當人們說他們打開了防火牆上的端口時,請不要信任他們”。

有人要工作嗎?

我遇到了同樣的問題。 但是沒有涉及防火牆問題。 實際上,在進行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 -u sqluser -p -h 127.0.0.1 -P 3307

請注意,MySQL主機是127.0.0.1,與遠程服務器的my.cnf文件上的bind-address值相同。 重要的是,我們使用此值而不是localhost,因為我們最終將訪問轉發的TCP端口,並且指定localhost會使MySQL完全忽略TCP並僅通過本地套接字連接到本地服務器。 因此,請注意,我們已指定端口3307進行連接; 這是我們正在轉發的TCP端口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM