繁体   English   中英

无法使用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文件中复制并粘贴了用户名和密码(当然还有冲洗特权)。 我再次这样做,除了这次指定了主机,例如CREATE USER'myUser'@'my.laptop.ip.address'由'myPassword'标识。 我一直遇到同样的错误,现在我完全陷入了困境。

请帮助。

在您的mysql机器上,点击:

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

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

好的,这很奇怪,但是看来问题出在我使用的密码上。 原始字符包含一些特殊字符($,&+)。 当我对其进行更改,使其仅包含数字,字母和下划线时,它可以工作。

这是真的吗?还是我在没有意识到原来是真正的解决方案的情况下无意间做了其他事情?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM