我正在尝试使用 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/