【问题标题】:PHP not connecting to Remote MySQL [duplicate]PHP未连接到远程MySQL [重复]
【发布时间】:2017-02-07 17:12:12
【问题描述】:

我需要使用 PHP 连接到远程 MySQL 服务器,但出现以下错误:

Warning: mysqli::mysqli(): (HY000/2003): Can't connect to MySQL server on ... (13) in /var/www/html/index.php on line 16

Warning: mysqli::query(): Couldn't fetch mysqli in /var/www/html/index.php on line 17

Fatal error: Call to a member function fetch_assoc() on a non-object in /var/www/html/index.php on line 18

远程服务器防火墙已打开,用户有权从任何主机连接,我可以从本地服务器使用mysql命令行连接,但无法连接PHP。

这里可能有什么问题?

编辑: 已经尝试使用不同的连接代码,但总是相同的错误。

这是最新的:

$mysqli = new mysqli(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS msg");
$row = $result->fetch_assoc();
echo $row['msg'];

【问题讨论】:

  • 我们应该如何分辨?您没有共享任何连接代码
  • 编辑添加连接代码。无论如何已经尝试了不同的代码并且没有工作。这似乎是某处的一些设置,但在 php.ini 上找不到任何可能影响远程 MySQL 连接的内容。
  • 您可以访问终端吗?尝试运行mysql -hHOST -uUSER -p,将 host 替换为远程 mysql 主机的 IP,将 USER 替换为您的数据库用户名。
  • 尝试添加一些代码来检查连接:if ($mysqli->connect_errno) { printf("Connect failed: %s\n", $mysqli->connect_error); exit(); }

标签: php mysql mysqli


【解决方案1】:

发现这是 SELinux 不允许 httpd 网络连接的问题。

执行:

setsebool -P httpd_can_network_connect=1

解决了这个问题。

【讨论】:

    【解决方案2】:

    确保您在连接信息中插入了信息。用单引号中的数据库信息替换 DB_DATABASE 和其他关键字。

    $mysqli = new mysqli('localhost', 'MyUsername', ''mypassword', 'database1');
    

    【讨论】:

      猜你喜欢
      • 2017-06-19
      • 2015-02-25
      • 2018-03-24
      • 2013-08-10
      • 2014-06-29
      • 2020-03-31
      • 1970-01-01
      • 2012-10-12
      • 2013-03-06
      相关资源
      最近更新 更多