繁体   English   中英

Mysqli_connect(): (HY000/2002): SYNOLOGY NAS 网站建设中的连接被拒绝

[英]Mysqli_connect(): (HY000/2002): Connection refused in Website Building ON SYNOLOGY NAS

我将一个小型服务站点从 AlterVista 门户转移到我的 NAS Synology,运行良好的相同代码现在不再在我的 NAS 上运行。 从连接错误到 MariaDB。 我已经阅读过你关于这个问题的论坛,但这是另一个系统(不是个人电脑,而是一个有自己应用程序的 nas)。 我正在使用端口 3307,因为 mariadb10 正在侦听该端口。 (同时mariadb 5正在监听3306端口你也可以查看)

在 NAS 上我已经安装了 MariaDB、PHP、PHP admin(可以很好地连接到 mariadb)、Apache HTTP Server 2.2,以及所有需要安装 PHP 5,7 的驱动程序和选项(mysqli、pdo 驱动程序和其他选项)。

<?php
error_reporting(E_ALL);

$USERNAME = "root";
$PASSWORD = "xxxxxxx";  //null  
$DBSERVER = "127.0.0.1:3307";   //127.0.0.1:3306  mariadb5
$DBNAME = "miodb";

if(!($db_connection = new mysqli($DBSERVER, $USERNAME, $PASSWORD, $DBNAME)))
   die('Connect Error (' . $db_connection->connect_errno . ') '. $db_connection->connect_error);

if(!($db_selection = $db_connection->select_db($DBNAME)))
   die ("Errore nella selezione del DB.");

$query = $db_connection->query("SELECT * FROM MATERIALE");
while($cicle=$query->fetch_array(MYSQLI_ASSOC)){
    $url=$cicle['FOTO'];
    echo "<tr>
              <td>".$cicle['CODICEARTICOLO']."</td>
              <td><img src='".$url."' width='50' height='50' /> </td>
              <td>".$cicle['DESCRIZIONE']."</td>
              <td>".$cicle['PREZZO']." Euro</td>
          </tr>";
}
$query->close();
$db_connection->close();
?>

警告: mysqli::__construct(): (HY000/2002): Connection denied in >/volume1/web/listino.php on line 111 警告: mysqli::select_db(): 无法获取 mysqli >in /volume1/web /listino.php 第 114 行 Errore nella selezione del DB。

请试试这个

$db_host        = '127.0.0.1';
$db_user        = 'root';
$db_pass        = '';
$db_database    = 'database_name';
$db_port        = '3306';

$connection = mysqli_connect($db_host,$db_user,$db_pass,$db_database,$db_port);

我在图形控制台 Synology Nas 中进行了修改:

  1. on(PHP 核心设置端口 3307 而不是 3306)。

  2. 在 PHP 代码端口 3307 值中。

  3. 在 3307 上的 TCP/IP 端口设置上启用 maria db10 标志(默认)

     <?php error_reporting(E_ALL); $USERNAME = "root"; $PASSWORD = "password"; //null X $DBSERVER = "127.0.0.1"; //127.0.0.1:3306 $DBNAME = "miodb"; $DB_PORT = '3307'; $SOCKET = "/run/mysqld/mysqld10.sock"; //not necessary $db_connection = new mysqli($DBSERVER, $USERNAME, $PASSWORD, $DBNAME, $DB_PORT); $query = $db_connection->query("SELECT * FROM MATERIALE"); while ($cicle = $query->fetch_array(MYSQLI_ASSOC)) { $url = $cicle['FOTO']; echo "<tr> <td>" . $cicle['CODICEARTICOLO'] . "</td> <td><img src='" . $url . "' width='50' height='50' /> </td> <td>" . $cicle['DESCRIZIONE'] . "</td> <td>" . $cicle['PREZZO'] . " Euro</td> </tr>"; } $query->close(); $db_connection->close();

在 Synology NAS 上连接到 MariaDB 时,您需要提供所有六个参数。 第六个参数是您应该使用的套接字名称。

mysqli 连接的正确代码是这样的:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
// Please do not connect as root!
$mysqli = new mysqli('localhost', 'root', 'password', 'miodb', 3307, '/run/mysqld/mysqld10.sock');
$mysqli->set_charset('utf8mb4'); // always set the charset

如果您只是开始进行 PHP 开发,那么我建议您学习 PDO 而不是 mysqli。 使用 PDO 你可以这样连接:

$pdo = new PDO("mysql:host=localhost;dbname=miodb;charset=utf8mb4;unix_socket=/run/mysqld/mysqld10.sock", 'root', 'password', [
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_EMULATE_PREPARES => false
]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM