【问题标题】:Using port forwarding and php with mysql_connect onto a remote server将端口转发和 php 与 mysql_connect 一起使用到远程服务器上
【发布时间】:2012-01-10 16:57:53
【问题描述】:

我有一台带有一台主机的 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() );  

如您所见,我并没有做任何复杂的事情,那为什么它一直尝试在本地连接?

【问题讨论】:

  • 尝试使用mysql 客户端实用程序,如果失败,则将telnet 发送到您的主机,看看是否有任何东西在监听。

标签: php mysql portforwarding


【解决方案1】:

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

有人想要一份工作吗?

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。但是没有涉及防火墙问题。事实上,当您使用 SSH 隧道时,您无需更改任何防火墙设置。

    我通过在 mysql_connect() 参数列表中将 'localhost' 更改为 '127.0.0.1' 解决了这个问题。 参考链接-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 端口。

    【讨论】:

      猜你喜欢
      • 2017-06-29
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 2017-08-26
      • 2018-02-05
      • 2016-01-18
      • 1970-01-01
      • 2011-02-05
      相关资源
      最近更新 更多