我有问题从我的VPS连接到另一台服务器上的mysql数据库,连接到localhost mysql工作正常。这是我的PHP脚本:
<?php
$servername = "mysql.example.com";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=database", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
我收到此错误:SQLSTATE[HY000] [1045] Access denied for user 'username'@'fh24-219.cybersales.cz' (using password: YES)
问题是主机从mysql.example.com
更改为fh24-219.cybersales.cz
(它指向我的VPS IP)。我不知道为什么。我已将httpd_can_network_connect_db
和httpd_can_network_connect
更改为1
。我将不胜感激。我可以使用phpmyadmin连接到mysql.example.com
。感谢。
答案 0 :(得分:0)
可能,您的$username
无权从执行PHP脚本的服务器连接到数据库。
尝试创建具有从远程服务器连接权限的用户。在MySQL服务器上执行:
CREATE USER 'testuser'@'fh24-219.cybersales.cz' IDENTIFIED BY 'mypass';
将'fh24-219.cybersales.cz'
更改为PHP服务器IP。如果您将'%'
写为服务器IP,则可以从任何地方访问(不建议这样做)。
更新:
如果您不知道用户拥有的权限,请执行SHOW GRANTS;
开启,例如PhpMyAdmin,看看是否提到了远程IP。
答案 1 :(得分:0)
遇到同样的问题,请尝试更改连接:
new PDO("mysql:host=$servername;dbname=database", $username, $password);
到
new PDO("mysql: host=$servername;dbname=database", $username, $password);
注意mysql:和host之间的空格。它对我有用,不能保证你不会在帐户的@localhost版本上获得拒绝访问权限(此时我被卡住了)但它删除了尾随位。