【问题标题】:connecting to mysql via ipaddress with MySQL and mysqli使用 MySQL 和 mysqli 通过 ipaddress 连接到 mysql
【发布时间】:2014-02-22 18:20:01
【问题描述】:

我有一个奇怪的问题。

我的远程mysql数据库没有域名,所以在我的开发机器上我通常只是使用ip地址连接到远程mysql。

在我的开发机器上,ip 地址连接适用于 mysql 和 mysqli 连接。

但是,当我上传到我的实时服务器 (CentOS)(也连接到同一个远程 mysql 数据库)时,IP 地址连接仅适用于我的旧 mysql 函数,但不适用于我的新 mysqli 函数。

我不知道如何解决这个问题,因为这对我的开发机器来说不是问题。

以下是开发机器的信息,然后是实时服务器的信息

开发机器:

**MySQL**
MySQL Support   enabled
Active Persistent Links 0
Active Links    0
Client API version  mysqlnd 5.0.8-dev - 20102224 - $Id: 65fe78e70ce53d27a6cd578597722950e490b0d0 $

Directive   Local Value Master Value
mysql.allow_local_infile    On  On
mysql.allow_persistent  On  On
mysql.connect_timeout   60  60
mysql.default_host  no value    no value
mysql.default_password  no value    no value
mysql.default_port  no value    no value
mysql.default_socket    no value    no value
mysql.default_user  no value    no value
mysql.max_links Unlimited   Unlimited
mysql.max_persistent    Unlimited   Unlimited
mysql.trace_mode    Off Off

**mysqli**

MysqlI Support  enabled
Client API library version  mysqlnd 5.0.8-dev - 20102224 - $Id: 65fe78e70ce53d27a6cd578597722950e490b0d0 $
Active Persistent Links 0
Inactive Persistent Links   0
Active Links    0

Directive   Local Value Master Value
mysqli.allow_local_infile   On  On
mysqli.allow_persistent On  On
mysqli.default_host no value    no value
mysqli.default_port 3306    3306
mysqli.default_pw   no value    no value
mysqli.default_socket   no value    no value
mysqli.default_user no value    no value
mysqli.max_links    Unlimited   Unlimited
mysqli.max_persistent   Unlimited   Unlimited
mysqli.reconnect    Off Off

实时服务器

**mysql**
MySQL Support   enabled
Active Persistent Links 0
Active Links    0
Client API version  5.0.22
MYSQL_MODULE_TYPE   external
MYSQL_SOCKET    /var/lib/mysql/mysql.sock
MYSQL_INCLUDE   -I/usr/include/mysql
MYSQL_LIBS  -L/usr/lib/mysql -lmysqlclient

Directive   Local Value Master Value
mysql.allow_local_infile    On  On
mysql.allow_persistent  On  On
mysql.connect_timeout   60  60
mysql.default_host  no value    no value
mysql.default_password  no value    no value
mysql.default_port  no value    no value
mysql.default_socket    /var/lib/mysql/mysql.sock   /var/lib/mysql/mysql.sock
mysql.default_user  no value    no value
mysql.max_links Unlimited   Unlimited
mysql.max_persistent    Unlimited   Unlimited
mysql.trace_mode    Off Off

**mysqli**

MysqlI Support  enabled
Client API library version  5.0.22
Active Persistent Links 0
Inactive Persistent Links   0
Active Links    0
Client API header version   5.0.95
MYSQLI_SOCKET   /var/lib/mysql/mysql.sock

Directive   Local Value Master Value
mysqli.allow_local_infile   On  On
mysqli.allow_persistent On  On
mysqli.default_host no value    no value
mysqli.default_port 3306    3306
mysqli.default_pw   no value    no value
mysqli.default_socket   no value    no value
mysqli.default_user no value    no value
mysqli.max_links    Unlimited   Unlimited
mysqli.max_persistent   Unlimited   Unlimited
mysqli.reconnect    Off Off

我不断收到的 mysqli 函数错误是: 连接 MySQL 失败:未知 MySQL 服务器主机 '[ipaddress]:3306' (3)

【问题讨论】:

  • 我还注意到我的开发配置安装了一个名为“mysqlnd”的东西——但在我的实时服务器上似乎并非如此。不知道这是否相关

标签: php mysql mysqli


【解决方案1】:

在我的例子中,奇怪的答案是将端口号作为单独的参数 mysqli 对象构造分开。

所以,而不是 $mysqli = new mysqli("ipaddress:3306", "my_user", "my_password", "world"); 我做了 $mysqli = new mysqli("ipaddress", "my_user", "my_password", "world", (int)$mysql_port);

我不知道为什么会这样,但确实如此。我希望这对其他人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-26
    • 2011-01-02
    • 2018-06-26
    • 1970-01-01
    • 2014-02-18
    • 2014-10-08
    相关资源
    最近更新 更多