我的数据库主机和我的网站主机不一样。
我已经在 .NET 上创建了一些带有web.config或app.config文件的 Web 应用程序,我可以在其中轻松地machinekey
为 web-farm 的 MySQL 数据库上的 MySQL 连接设置一个。
这在 .NET 或 Visual Studio Web 应用程序上非常简单。
<system.web>
<machineKey validationKey="C250127840E44F50A34824E348FC089A0DE6C60C3D0CF61A31AB01BCAB6AE3940C82648D2F085B1DECFA5204AD393A5810403DABED73002608AEF7231F29E6CB" decryptionKey="8A86EB63181EDD9439D664ACA990D07302F3280E6F6919B3" validation="SHA1" decryption="AES"/>
</system.web>
然而
我现在正在为 GNU/Linux 主机创建一个网站。我使用的是同一个数据库,在测试中,连接很好。但是,当发布时,MySQL 连接被拒绝。
我怀疑这又是因为网络农场,但没有证据。
我已允许远程 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 得到相同的结果。
如果有人可以请提供帮助。这几天我一直在寻找答案。
非常感谢所有的帮助。看来我用于数据库将近 4 年的主机已决定锁定 3306 对工作台和远程访问的访问。没有这方面的通知。
他们认为对 MySQL 的攻击率太高了。现在只有本地主机和相同的主机网站在那里工作。不过这很奇怪,因为我所有的其他项目和工作台仍然连接。我曾与他们争论过这一点,但他们坚持。
我将不得不将数据库移动到其他地方。
今天早上我在不同的主机上做了一个测试。一切都很完美。
再次感谢所有的帮助。