Mysql PDO/MySqli 从 Linux 主机连接

Mysql PDO/MySqli Connect From Linux Host

我的数据库主机和我的网站主机不一样。

我在 .NET 上使用 web.config 或 app.config 文件创建了一些 Web 应用程序,我可以在其中轻松地为 mysql 上的 mysql 连接设置机器密钥] 网络场的数据库。

这在 .NET 或 Visual studio 网络应用程序上非常简单。

   <system.web>
 <machineKey validationKey="C250127840E44F50A34824E348FC089A0DE6C60C3D0CF61A31AB01BCAB6AE3940C82648D2F085B1DECFA5204AD393A5810403DABED73002608AEF7231F29E6CB" decryptionKey="8A86EB63181EDD9439D664ACA990D07302F3280E6F6919B3" validation="SHA1" decryption="AES"/>
</system.web>

不过

我现在正在为 Linux 主机创建一个网站。我正在使用相同的数据库,而且在测试时,连接正常。但是,在发布时,mysql 连接被拒绝。

我怀疑又是网络农场的原因,但没有证据。

我已经在远程-mysql上允许了主机IP。

我检查过 Mysql 主机上的主机 IP 未被阻止。

我已经检查了 mysql 连接的端口。(它在发布之前有效)。

我检查了 mysql 用户名的用户权限。

我也给 mysql 主机上的支持人员发了邮件,看看他们那边有没有什么东西。

我已经坐了一段时间了,这很令人沮丧。

有什么方法可以在 app/is 上设置机器密钥吗?

如果有人建议我可以检查的任何其他内容,或者指出我可能缺少的设置,那将不胜感激。

下面是我的连接,当我 运行 应用程序时它确实有效。

发布到主机,连接被拒绝。

<?php

    $host = "server IP";
    $port = 3306;
    $user = "username";
    $password = "**********";
    $dbname = "mysql.table";

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

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

?>



<?php

 $host = 'DB_IP';
    $dbname = 'DB_Name';
    $dsn = 'mysql:host=DB_IP;dbname=DB_Name';
    $username = 'Username';
    $password = 'Password';


     try {
         $conn = new PDO($dsn, $username, $password);
         echo "Connected to $dbname at $host successfully.";
     } catch (PDOException $pe) {
         die("Could not connect to the database $dbname :" . $pe->getMessage());
     }    

  ?>

这是我测试代码的时候::

已成功连接到 IPADDRESS 的 mydb。

这是发布到主机后的::

无法连接到数据库 mydb :SQLSTATE[HY000] [2002] 连接被拒绝

我用 PDO 和 MySqli 得到相同的结果

如果有人可以提供帮助。几天来我一直在寻找答案。

你能给我解释一下吗?

什么linuxdistribution/version?

你们有两台还是三台服务器? (MySQL 服务器、测试服务器和生产服务器?)

您是否检查过您可能安装的 ufw/ip-tables 或其他 "firewall" 软件?

你检查终端的连接了吗? (类似 nc -zv 或其他任何内容)

我是新手...我只是想帮忙...

对不起我的英语

非常感谢您提供的所有帮助。似乎我为数据库使用了将近 4 年的主机已决定锁定对 workbench 的 3306 访问和远程访问。没有这方面的通知。

他们认为 MySQL 的攻击率太高了。现在只有本地主机和相同的主机网站在那里工作。不过这很奇怪,因为我的所有其他项目和 workbench 仍然连接。我和他们争论过,但他们坚持。

我必须将数据库移到别处。

今天早上我在另一台主机上进行了测试。一切都完美无缺。

再次感谢大家的帮助。