php - 使用本地网络进行数据库连接

标签 php mysql networking debian proxmox

我们在 OVH 上有一个带有 proxmox 的专用服务器。这个想法是在本地连接容器,但也通过互联网连接。到目前为止我有2个容器。

我为本地 IP 添加了一个桥接网络,并且该网络正在工作,因为我能够相互 ping 容器。
还将 bind-address=192.168.1.3 添加到 my.cnf。

1 个容器正在运行 apache + php 7.2 (192.168.1.3)

另一个容器正在运行 MySQL。 (192.168.1.2)

<小时/>

问题

我的 MySQL 一直显示 SQLSTATE[HY000] [2002] 连接超时

这是我的 php 代码:

<?php

/**
 * Configuration for database connection
 *
 */

$host       = "192.168.1.2";
$username   = "root";
$password   = "root";
$dbname     = "test";
$dsn        = "mysql:host=$host;dbname=$dbname";
$options    = array(
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
              );

try 
{
    $connection = new PDO("mysql:host=$host", $username, $password, $options);
    $sql = file_get_contents("data/init.sql");
    $connection->exec($sql);

    echo "Database and table users created successfully.";
}

catch(PDOException $error)
{
    echo $sql . "<br>" . $error->getMessage();
}

根据我的理解,代码是正确的,所以它一定与我的 mysql 配置有关。
我确信这确实很简单,但我在这方面浪费了很多时间。

最佳答案

尝试从 Apache、PHP 容器telnet 192.168.1.2 3306。可以连接吗?

确保MySQL的监听端口是3306,如果是其他则相应调整PHP代码。还要确保 iptables 不会阻止任何传入连接。另请确保您对 root 以及您需要从其他主机获得权限的任何其他用户拥有正确的权限。

此外,请在对 MySQL 进行任何配置更改时检查是否重新启动服务。

关于php - 使用本地网络进行数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49282881/

相关文章:

php - LSA - 潜在语义分析 - 如何用 PHP 编码?

php - 实体的季节性定价。

mysql - MySQL 服务器当前因 Cpanel 错误而脱机

php - 总登录时间

php - Socket和Transport有什么区别,如果有的话

php - 将除 [0-9] [a-z] [A-Z] 之外的所有字符转换为 "-"如何在 php 中?

javascript - 为什么我的 php 函数没有被 jquery $.get 执行

windows - 无法连接到真正的 www.google.com

c# - 生成 PHP UTF-16 SHA1 哈希以匹配 C# 方法

c - 为什么我在 C 中使用 UDP 套接字接收文件时会出现一些垃圾字节?