【问题标题】:MySQLi remote connection host:portMySQLi 远程连接主机:端口
【发布时间】:2021-07-11 14:08:02
【问题描述】:

我可以使用地址 host:port 访问远程 Mysql 数据库。

使用Mysql客户端(DBeaver)访问数据库服务器效果很好。

我正在尝试使用 PHP 连接到同一个数据库服务器。

<?php
    
    $host = "xxx.xxx.xxx.xxx:3333";    
    $port = 3306;
    $user = "user";
    $password = "password";
    $dbname = "db01";

    $conn = new mysqli($host, $user, $password, $dbname, $port);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

?>

路由器使用3333端口进行端口转发,以便从外部访问服务器。

我明白了:

Warning: mysqli::mysqli() [mysqli.mysqli]: (HY000/2005): Unknown MySQL server host 
'xxx.xxx.xxx.xxx:3333' (25)

是否有可能我们不能在 mysqli 的 $host 条目中使用“host:port”?

我必须使用没有端口的 IP 地址吗?

【问题讨论】:

  • SO 是 3333 还是 3306 哪个端口?
  • 关闭$host = "xxx.xxx.xxx.xxx:3333"; 的端口,所以删除3333。然后,如果端口是3333,请将其放在变量$port或您想访问的任何端口中
  • “92.35.184.250:3333”不是IP地址,是IP地址和端口号。
  • 我认为您需要像@RiggsFolly 所说的那样删除 3333。删除它并将 3333 放在 $port 变量上后它是否工作?
  • 但是你说3306和dbeaver一起工作?您是从网络内部使用它吗?无论如何,在这种情况下,正如其他人所说,您需要在 mysqli 命令的单独端口选项中指定 3333,而不是作为 IP 的一部分

标签: php mysql mysqli


【解决方案1】:

Mysqli 允许您以两种方式指定端口参数。作为冒号后的主机参数的一部分,例如127.0.0.1:3306,或作为第五个(端口)参数。当端口与主机名一起提供时,主机名参数中提供的值优先于端口参数中指定的任何端口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多