【问题标题】:Access denied for user 'root'@'localhost' (using password: YES) when i try accessing mysql remotely当我尝试远程访问mysql时,用户'root'@'localhost'的访问被拒绝(使用密码:YES)
【发布时间】:2018-12-18 06:59:37
【问题描述】:

我正在构建一个 android 应用程序,并希望使用 mysql 将用户凭据存储在表中。我在其他地方有一台服务器,并根据需要创建了表并配置了所有内容。

这里是连接mysql数据库的php文件:

<?php

$db_name="mydbname";
$mysql_user="root";
$mysql_pass="mypassword";
$server_name="localhost";

$con=mysqli_connect($server_name, $mysql_user, $mysql_user, $db_name);
if(!$con){
    echo "Connection error...".mysqli_connect_error();

}
else{
    echo "Successful";
}

?>

当我在家中的系统上本地执行此操作(当然,进行了必要的更改)时,它可以完美运行并返回“成功”。即使在运行 android 应用程序时,它也会按预期更新表。

但是当我尝试在我的服务器上远程执行上述 php 脚本时,它会说:

“用户'root'@'localhost'的访问被拒绝(使用密码:YES)”

即使我可以在家中的终端上使用 mysql。服务器正在运行 Ubuntu 16.04。

【问题讨论】:

  • localhost 不再是您在远程服务器上的家用计算机......当然这不起作用。您是在尝试连接到您的家庭数据库服务器还是远程服务器的数据库服务器?两者的凭据是否相同?
  • 请检查 MySQL 用户名、密码和 IP 地址
  • @Devon 我确实尝试将 localhost 更改为我的服务器的 IP 地址。它给了我同样的错误。难道我做错了什么?我还需要在 server_name 字段中添加其他内容吗?另外,我有两个数据库的凭据。在家庭服务器上工作正常,但拒绝访问远程服务器。

标签: php android mysql server


【解决方案1】:

如果您使用的应用程序将在不同的设备上,则您不能使用“localhost”作为您的主机。由于 localhost 指的是您所在的当前主机,在这种情况下将是您的 android 设备。

如果您与 ubuntu 服务器在同一网络上,或者如果它具有可公开访问的 ip,您可以将其 ip 地址作为主机。 (你可以通过在你的 ubuntu 服务器上运行 ifconfig 来弄清楚)。

但我怀疑您的 root 帐户是否可以从 localhost 以外的任何其他地方访问,因此我建议您通过运行创建一个新用户帐户 CREATE USER 'newuser'@'%' IDENTIFIED BY 'password';

并使用这些凭据登录。

【讨论】:

    【解决方案2】:

    转到 MySQL ® Databases ,为数据库和用户名创建一个相似的名称。

    像这样:

    数据库:myhost_mydbname

    用户名:myhost_mydbname

    下一步:选择将用户添加到数据库 [添加按钮] 上的所有权限! 然后,试试这个:

    $db_name="myhost_mydbname";
    $mysql_user="myhost_mydbname";
    $mysql_pass="mypassword";
    $server_name="localhost";
    

    希望这个方法对你有帮助!

    【讨论】:

      猜你喜欢
      • 2016-07-11
      • 2013-05-07
      • 2020-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多