This question already has an answer here:
JDBC Connection: Access Denied for User even All Previlleges are Granted [closed]
                                
                                    (1个答案)
                                
                        
                                6年前关闭。
            
                    
我的自签名小程序可以在小程序查看器和本地Web浏览器上完美运行。但是,当我根据网站服务器上mysql数据库的数据库名称,用户名和密码更改连接字符串,并通过ftp将项目上载到服务器时,小程序无法连接到数据库。小程序代码为:

public void init() {
JPanel panel = new JPanel();
panel.add( new JLabel("Start"));
revalidate();
// TODO start asynchronous download of heavy resources
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://www.mywebiste.com:3306/database";
String user = "user";
String password = "password";


try {
    Class.forName(driver);
    Connection con = DriverManager.getConnection(url,user,password);

    String sql4 = "Select * from form where Il='Ankara'";

                    //System.out.println(password + " " + userName);
               Statement  stmt = con.createStatement();
              ResultSet rs = stmt.executeQuery(sql4);
    panel.add( new JLabel("Connection"));
    revalidate();
}
catch(Exception e) {
    panel.add( new JLabel("Not Connected"));
    revalidate();
}

Container content = getContentPane();
             content.setLayout(new GridBagLayout());
             content.add(panel);


}

最佳答案

您是同源政策的受害者。

可以通过在applet上签名来解决此问题,但我强烈建议您不要打扰。由于Java中最近涉及Applets和JNLP的所有安全问题,因此该技术与dodo一样死了。越来越多的系统默认禁用Java小程序,并且越来越多的用户自己(或其IT部门)禁用了此功能。

最好在服务器上的Web应用程序中使用一些轻量级的REST服务,并在浏览器上使用一些javascript(如果您真的坚持要使用applet),该服务会通过http使用这些服务。然后,您也无需将数据库公开到网络。

即使对于内部应用程序,我也会认真考虑一下(或将其回推给任何提出要求的人)。

关于java - 客户端计算机上的Applet JDBC连接失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17675412/

10-12 19:42