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

标签 php mysql mysqli access-denied

我正在尝试使用 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 文件中复制并粘贴了用户名和密码(当然还有刷新权限) .我又做了一次,除了这次指定了主机,例如创建由“myPassword”标识的用户“myUser”@“my.laptop.ip.address”。我不断收到同样的错误,现在我完全被难住了。

请帮忙。

最佳答案

在你的 mysql 机器上点击:

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

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

关于php - 无法使用php mysqli连接到远程服务器上的MySQL数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31745277/

相关文章:

PHP 与 MySQLi 并使用变量执行 MySQL 脚本?

javascript - 使用 AJAX 在点击时执行简单的 mysqli 查询

php - 使用 PHP 更新 mysql 数据库表

PHP - Codeigniter 专业架构

php - 循环父记录,然后是子记录,父记录和子记录等

mysql - 使用 MySQL sql_mode=only_full_group_by 获取组的第一行

mysql - 当不是输入值时,在前端更新后保存更新的表值,Laravel

php - Symfony - 图像响应 - 速度,优化

php - 搜索多个表

sql - 自定义表单生成器的数据库设计(和结果存储)