我的数据库主机和我的网站主机不一样。
我在 .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 的攻击率太高了。现在只有本地主机和同一主机的网站可以在那里工作。但这很奇怪,因为我的所有其他项目和工作台仍然连接。我和他们争论过这个问题,但他们坚持。
我将必须将数据库移到其他地方。
我今天早上在另一台主机上进行了测试。一切正常。
再次感谢您的所有帮助。