无法使用 php mysqli 连接到远程服务器上的 MySQL 数据库

Cannot connect to MySQL database on remote server using php mysqli

我正在尝试使用 mysqli 将一些数据插入到 MySQL 数据库(我们称该架构为 myDatabase),但无法成功连接。这是要连接的代码片段:

...
$config = parse_ini_file('../includes/config.ini');
$username = $config['username'];
$password = $config['password'];
$dbname = $config['dbname'];
$server = $config['server'];
$conn = new mysqli($server, $username, $password, $dbname);
if (!$conn || $conn->connect_error)   {
  die( 'Connection Failed: ('.$conn->connect_errno.') '.$conn->connect_error);
}
...

我得到以下结果:

Connection Failed: (1045) Access denied for user 'myUser'@'my.laptop.ip.address' (using password: YES)

以下是有关设置的一些详细信息,以防它们相关:
代码在我的笔记本电脑上 运行 Windows 7 并使用 xammpp 附带的 PHP 5.3.5。 数据库托管在 MySQL5.1.52 的远程服务器上。我创建了一个用户,并向其授予了对 myDatabase.* 的所有权限。没有为用户指定主机(例如 'myUser'@'%'),因为我仍在开发中并且不知道将托管实时应用程序代码的 IP 地址。

如果我通过 ssh 连接到数据库服务器,我可以使用 myUser 的凭据连接到 mysql 并访问 myDatabase 中的表。我在同一个服务器上有另一个模式,由不同的用户访问,并且能够使用 mysqli 进行连接而没有任何问题。

为了确保这不是错字,我删除了用户,然后重新创建了它,从我的 php 代码中使用的 config.ini 文件中复制并粘贴了用户名和密码(当然还有刷新权限)。我又做了一次,除了这次指定了主机,例如创建用户 'myUser'@'my.laptop.ip.address' 'myPassword'。我不断收到同样的错误,现在我完全被难住了。

请帮忙。

在您的 mysql 机器上命中:

GRANT ALL PRIVILEGES ON database.* TO 'myUser'@'%' IDENTIFIED BY 'newpassword';
FLUSH PRIVILEGES;

这将允许用户从任何主机进行连接。一旦它起作用,您可以将它限制为仅特定的主机和数据库。

好的,这很奇怪,但问题似乎与我使用的密码有关。原始的包含一些特殊字符 ($, & +)。当我将其更改为仅包含数字、字母和下划线时,它起作用了。

这是真的吗,还是我不小心做了其他事情而没有意识到这才是真正的解决方案?