Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用端口转发和php与mysql_连接到远程服务器_Php_Mysql_Portforwarding - Fatal编程技术网

使用端口转发和php与mysql_连接到远程服务器

使用端口转发和php与mysql_连接到远程服务器,php,mysql,portforwarding,Php,Mysql,Portforwarding,我有一台带有一台主机的web服务器,我想在另一台主机上使用该数据库。 我想使用端口转发来完成此操作,并且已经使用设置了转发端口 ssh -P -fg -L23307:myserver.net:3306 myname@myserver.net sleep 1d 这似乎工作正常(尽管如果有人能告诉我如何检查,那就太好了),但我无法让PHP通过该端口连接到MySQL——它一直试图连接到自己的本地MySQL数据库(该数据库未运行) $mlink=mysql\u connect(“localhost:2

我有一台带有一台主机的web服务器,我想在另一台主机上使用该数据库。 我想使用端口转发来完成此操作,并且已经使用设置了转发端口

ssh -P -fg -L23307:myserver.net:3306 myname@myserver.net sleep 1d
这似乎工作正常(尽管如果有人能告诉我如何检查,那就太好了),但我无法让PHP通过该端口连接到MySQL——它一直试图连接到自己的本地MySQL数据库(该数据库未运行)

$mlink=mysql\u connect(“localhost:23307”、“myusername”、“mypassword”);
mysql_select_db('mydatabase',$mlink)或die(“错误-无法连接到数据库localhost:23307.
错误:.mysql_Error());

正如你所看到的,我没有做那么复杂的事情,为什么它一直试图在本地连接?

所以,答案是“当人们说他们已经打开了防火墙上的端口时,不要相信他们”


有人想要工作吗?

我也面临同样的问题。但没有涉及防火墙问题。事实上,当您执行SSH隧道时,不需要更改任何防火墙设置

我通过在mysql\u connect()参数列表中将“localhost”更改为“127.0.0.1”解决了这个问题。 参考链接-

摘录-

通过MySQL连接

是时候看到我们所有的努力都有回报了。在本地机器上,我们只需发出以下命令:

$mysql-ussqluser-p-h127.0.0.1-p3307

请注意,MySQL主机是127.0.0.1,这与远程服务器的my.cnf文件上的绑定地址值相同。重要的是,我们使用这个值,而不是localhost,因为我们最终访问的是转发的TCP端口,指定localhost会导致MySQL完全忽略TCP,而只是通过本地套接字连接到本地服务器。因此,请注意,我们已指定端口3307进行连接;这是我们正在转发的TCP端口


尝试使用
mysql
client实用程序,如果失败,则将
telnet
发送到您的主机,查看是否有任何内容正在侦听。
$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() );