无法使用 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;
这将允许用户从任何主机进行连接。一旦它起作用,您可以将它限制为仅特定的主机和数据库。
好的,这很奇怪,但问题似乎与我使用的密码有关。原始的包含一些特殊字符 ($, & +)。当我将其更改为仅包含数字、字母和下划线时,它起作用了。
这是真的吗,还是我不小心做了其他事情而没有意识到这才是真正的解决方案?
我正在尝试使用 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;
这将允许用户从任何主机进行连接。一旦它起作用,您可以将它限制为仅特定的主机和数据库。
好的,这很奇怪,但问题似乎与我使用的密码有关。原始的包含一些特殊字符 ($, & +)。当我将其更改为仅包含数字、字母和下划线时,它起作用了。
这是真的吗,还是我不小心做了其他事情而没有意识到这才是真正的解决方案?