PHP - 无法连接到远程 mysql 数据库
PHP - can not connect to remote mysql database
我在从 VPS 连接到另一台服务器上的 mysql 数据库时遇到问题,连接到本地主机 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
。谢谢。
可能,您的 $username
没有权限从执行 PHP 脚本的服务器连接到数据库。
尝试创建一个有权从远程服务器连接的用户。在 MySQL 服务器上执行:
CREATE USER 'testuser'@'fh24-219.cybersales.cz' IDENTIFIED BY 'mypass';
将'fh24-219.cybersales.cz'
更改为PHP服务器IP。如果你将 '%'
作为服务器 IP,它将可以从任何地方访问(不推荐)。
已更新:
如果您不知道用户有什么权限,例如执行SHOW GRANTS;
PhpMyAdmin 查看是否提到了远程 IP。
遇到同样的问题,请尝试更改连接:
new PDO("mysql:host=$servername;dbname=database", $username, $password);
到
new PDO("mysql: host=$servername;dbname=database", $username, $password);
注意 mysql: 和主机之间的 space。它对我有用,不能保证您不会在帐户的@localhost 版本上被拒绝访问(我被困在这一点上)但它删除了尾随位。
我在从 VPS 连接到另一台服务器上的 mysql 数据库时遇到问题,连接到本地主机 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
。谢谢。
可能,您的 $username
没有权限从执行 PHP 脚本的服务器连接到数据库。
尝试创建一个有权从远程服务器连接的用户。在 MySQL 服务器上执行:
CREATE USER 'testuser'@'fh24-219.cybersales.cz' IDENTIFIED BY 'mypass';
将'fh24-219.cybersales.cz'
更改为PHP服务器IP。如果你将 '%'
作为服务器 IP,它将可以从任何地方访问(不推荐)。
已更新:
如果您不知道用户有什么权限,例如执行SHOW GRANTS;
PhpMyAdmin 查看是否提到了远程 IP。
遇到同样的问题,请尝试更改连接:
new PDO("mysql:host=$servername;dbname=database", $username, $password);
到
new PDO("mysql: host=$servername;dbname=database", $username, $password);
注意 mysql: 和主机之间的 space。它对我有用,不能保证您不会在帐户的@localhost 版本上被拒绝访问(我被困在这一点上)但它删除了尾随位。