Mysql PDO/MySqli 从 Linux 主机连接

Mysql PDO/MySqli 从 Linux 主机连接

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

我在 .NET 上创建了一些 Web 应用程序,网页配置或者应用程序配置文件,我可以轻松地machinekey为 Web 服务器场的 MySQL 数据库设置 MySQL 连接。

这在 .NET 或 Visual Studio Web 应用程序上非常简单。

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

然而

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

  • 我怀疑这又是因网络农场而起,但没有证据。

  • 我已经允许 remote-mysql 上的主机 IP。

  • 我已经检查过 MySQL 主机上的主机 IP 没有被阻止。

  • 我已经检查了 MySQL 连接的端口。(它在发布之前就可以正常工作)。

  • 我已经检查了 MySQL 用户名的用户权限。

  • 我还向我的 MySQL 主机上的支持人员发送了邮件,以了解他们是否有任何问题。

  • 我已经为此烦恼了一段时间,这令人沮丧。

有什么方法可以在此应用程序上设置机器键/是否需要?

如果有人建议我可以检查其他内容,或者指出我可能遗漏的设置,我将非常感激。

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

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

<?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 获得了相同的结果。

如果有人能帮忙的话请帮忙。我已经寻找答案好几天了。

答案1

非常感谢大家的帮助。我用于数据库近 4 年的主机似乎已决定锁定 3306 工作台访问权限和远程访问。没有收到任何通知。

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

我将必须将数据库移到其他地方。

我今天早上在另一台主机上进行了测试。一切正常。

再次感谢您的所有帮助。

相关内容