【问题标题】:JDBC Connection: Access Denied for User even All Previlleges are Granted [closed]JDBC连接:即使所有Previlleges都被授予,用户也被拒绝访问[关闭]
【发布时间】:2013-07-16 19:53:04
【问题描述】:

我有一个通过此代码连接到数据库的 JApplet:

    String url = "jdbc:mysql://localhost:3306/moodlele_survey";
    String user = "moodlele_garanti";
    String password = "garanti";



    try {
        panel.add( new JLabel("before driver"));
        Class.forName("com.mysql.jdbc.Driver");
        panel.add( new JLabel("failed"));
        Connection con = DriverManager.getConnection(url, user, password);

小程序已签名,因此它有权连接数据库。数据库用户被授予所有 previlleges 并且用户名、密码和数据库名称是正确的,因为我可以使用相同的信息通过 PHP 连接到数据库。我该如何解决?

打印的堆栈错误是: 用户 'moodlele_garanti'@'localhost' 的访问被拒绝(使用密码:YES)

【问题讨论】:

  • 为什么这被否决了?
  • 您确定您的数据库、用户和密码使用了正确的文本吗?
  • 我得到的建议是将 url 更改为 www.mywebsite.com:3306 但这会带来错误问题是 Applet 正在下载到客户端,他可以' 不能访问 localhost 中的数据库(可能用户没有安装 mysql 数据库)。如何解决这个问题?嗯……
  • 在您的代码中看到“localhost”这个词了吗?那是 local 主机;您的(本地)机器。小程序在浏览器中运行。
  • @user1570194 问题是PHP在部署应用程序的服务器上执行了服务器PHP代码。您的用户通过 http://someUrl/appName/restOfUrl.php 访问您的 PHP 站点,这意味着 PHP 代码在 someUrl 服务器(或此 someUrl 名称指向的任何地方)执行,并且看起来此服务器已在其中安装 MySQL 数据库,因此没有访问数据库时遇到问题。另一方面,Applet 被下载到客户端 PC,即它将作为桌面应用程序执行,并且您的客户端在其 PC 中没有 mysql 数据库。

标签: java database jdbc japplet


【解决方案1】:

您似乎并没有真正掌握您正在使用的技术,或者它们的工作原理。

在您声明的 cmets 中:

我网站的客户端机器也是一个本地主机,用于在其中运行的代码通过 ftp 上传,就像 PHP 中的逻辑一样:编写本地主机并上传到服务器,然后连接

PHP 正在在网络服务器上运行。这也恰好是与您的 mysql 服务器相同的主机。所以,是的 localhost 在 PHP 中是正确的。您家中计算机上的网络浏览器通过 TCP 连接到网络服务器,PHP 在网络服务器上执行,连接到 同一主机 上的 mysql 服务器,一切正常。

Java 小程序在您机器上的浏览器中运行。小程序从网站下载到您家中的机器上,并在该机器上运行。您的代码在您的问题中的编写方式,然后尝试连接到您家中机器上的 mysql 服务器localhost 是你的电脑。

为了让该小程序连接到您托管公司的 mysql 服务器,它需要尝试连接到 那个 主机。此外,端口需要在该服务器上打开/在该服务器上允许远程连接到 mysql 服务器,mysql 需要监听外部(公共)IP 地址上的连接,并且您需要为该用户授予权限能够从远程主机连接。

可能值得一提的是,总的来说,这是一个非常糟糕的主意。 向世界公开数据库很少是一个好主意;授予访问权限的一个小错误会产生一个非常大的问题。还有许多其他安全问题。人们会这样做吗?当然。仍然不是一个好主意。

通常,为公共消费而设计的小程序会使用中介服务(例如 Web API 甚至 RMI),让您有机会锁定事物。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 2021-04-21
    • 1970-01-01
    • 2021-10-31
    • 2018-06-08
    • 1970-01-01
    相关资源
    最近更新 更多