gpt4 book ai didi

java - JDBC连接: Access Denied for User even All Previlleges are Granted

转载 作者:行者123 更新时间:2023-11-30 01:29:04 25 4
gpt4 key购买 nike

我有一个通过以下代码连接到数据库的 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);

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

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

最佳答案

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

在评论中您指出:

My website's client machine is also a localhost for the codes that run inside it uploaded via ftp like the logic in PHP: you write localhost and upload to the server, then it connects

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

Java 小程序在您计算机上的浏览器中运行。该小程序从网站下载到您家里的机器上,并在那台机器上运行。按照您的问题中编写代码的方式,它会尝试连接到您家里计算机上的 mysql 服务器localhost 是您的计算机。

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

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

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

关于java - JDBC连接: Access Denied for User even All Previlleges are Granted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17674496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com