使用端口转发和php与mysql_连接到远程服务器
我有一台带有一台主机的web服务器,我想在另一台主机上使用该数据库。 我想使用端口转发来完成此操作,并且已经使用设置了转发端口使用端口转发和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
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() );