我有一个远程托管数据库。我一直在研究一个FX应用程序,我连接到localhost来读取和写入数据库中的数据。但现在我想将桌面应用程序连接到远程托管数据库,并从那里读取和写入数据。但它显示了以下错误。
SEVERE: null
java.sql.SQLException: null, message from server: "Host '103.253.39.4' is not allowed to connect to this MySQL server"
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1037)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2239)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2270)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2069)
at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:794)
at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:44)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:389)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at com.garciaPlumbing.model.DatabaseManager.connect(DatabaseManager.java:38)
at com.garciaPlumbing.model.FittingDetails.getAllSuppliers(FittingDetails.java:155)
at com.garciaPlumbing.view.Layout_AddFittingType.(Layout_AddFittingType.java:52)
at com.garciaPlumbing.view.Layout_InsertFittingDetails.(Layout_InsertFittingDetails.java:37)
at com.garciaPlumbing.view.MenuItemTask.(MenuItemTask.java:23)
at com.garciaPlumbing.view.BasicLayout.(BasicLayout.java:40)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:340)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplicationWithArgs$148(LauncherImpl.java:327)
at com.sun.javafx.application.LauncherImpl$$Lambda$43/445051633.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$166(PlatformImpl.java:323)
at com.sun.javafx.application.PlatformImpl$$Lambda$44/1775282465.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null$164(PlatformImpl.java:292)
at com.sun.javafx.application.PlatformImpl$$Lambda$47/2028529302.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(PlatformImpl.java:291)
at com.sun.javafx.application.PlatformImpl$$Lambda$45/2040495657.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$141(WinApplication.java:102)
at com.sun.glass.ui.win.WinApplication$$Lambda$37/1558600329.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "JavaFX Application Thread" Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
Caused by: java.lang.NullPointerException
at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:358)
at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:303)
... 5 more
java.lang.ExceptionInInitializerError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:340)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplicationWithArgs$148(LauncherImpl.java:327)
at com.sun.javafx.application.LauncherImpl$$Lambda$43/445051633.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$166(PlatformImpl.java:323)
at com.sun.javafx.application.PlatformImpl$$Lambda$44/1775282465.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl.lambda$null$164(PlatformImpl.java:292)
at com.sun.javafx.application.PlatformImpl$$Lambda$47/2028529302.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(PlatformImpl.java:291)
at com.sun.javafx.application.PlatformImpl$$Lambda$45/2040495657.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$141(WinApplication.java:102)
at com.sun.glass.ui.win.WinApplication$$Lambda$37/1558600329.run(Unknown Source)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at com.garciaPlumbing.model.FittingDetails.getAllSuppliers(FittingDetails.java:171)
at com.garciaPlumbing.view.Layout_AddFittingType.(Layout_AddFittingType.java:52)
at com.garciaPlumbing.view.Layout_InsertFittingDetails.(Layout_InsertFittingDetails.java:37)
at com.garciaPlumbing.view.MenuItemTask.(MenuItemTask.java:23)
at com.garciaPlumbing.view.BasicLayout.(BasicLayout.java:40)
... 16 more
这是我为建立连接所做的工作。
public class DatabaseManager {
private static final String CLASS_FORNAME = "com.mysql.jdbc.Driver";
private static final String DATABASE_LOCATION = "jdbc:mysql://mysql.2freehosting.com/";//"jdbc:mysql://localhost:3306/";
private static final String DATABASE_NAME = "u821323799_grc?";//"GarciaPlumbing2";
private static final String USERNAME = "u821323799_grc";//"root";
protected static Connection connection = null;
protected static PreparedStatement statement = null;
/**
*
* Connect() method is responsible for establishing any connection to database.
*
*/
public static void connect(){
try {
Class.forName(CLASS_FORNAME);
connection = (Connection) DriverManager.getConnection(
"jdbc:mysql://mysql.2freehosting.com/u821323799_grc?"
+ "user=u821323799_grc&password=celloviii1");
} catch (ClassNotFoundException | SQLException ex) {
Logger.getLogger(DatabaseManager.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
请有人帮我解决一个更好的解决方案。
提前致谢。
答案 0 :(得分:0)
java.sql.SQLException:null,来自服务器的消息:" Host ' 103.253.39.4'不允许连接到这个MySQL服务器"
这意味着远程系统上的MySQL服务器未配置为使用提供的凭据接受来自{{1}}的远程连接。请将远程MySQL服务器配置为接受远程连接,然后重试。