繁体   English   中英

无法从Java连接到MYSQL数据库

[英]Unable to connect to MYSQL database from java

我是MySQL和UNIX的新手,实际上是从一个UNIX盒连接到另一个,我使用ssh -i commonprivatekey -p 60041 root@172.16.28.102 一旦连接成功,我将执行mysql -uroot -ppassword mysql mysql提示符,我可以执行select命令。

环保详情:

IP               : 172.16.28.102
SSH Port         :  60041
usernames        :  root
passwords        :  password
SSH Privatekey   :  commonprivatekey
mySQL DB Port    :  60040
mySQL DB Name    :  mysql
mySQL DB UserID  :  root
mySQL DB Password:  password

我的Java代码是

try {
  Class.forName("com.mysql.jdbc.Driver");
  conn = DriverManager.getConnection("jdbc:mysql://172.16.28.102:60040/mysql", "root", "password");
}  catch (SQLException e) {
  logger.error("Could not connect to the database", e);
}

异常跟踪:

Caused by: java.sql.SQLException: null,  message from server: "Unknown error 1130"
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1095)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2031)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:718)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
    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:422)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at uk.accenture.fdt.batch.control.ConnectionsHelper.getDatabaseConnection(ConnectionsHelper.java:35)

您的应用程序是否与mysql数据库位于同一服务器上? 错误1130听起来像不允许用户连接到数据库。 也许不允许客户端IP连接到该数据库。 例如,如果您有一个用户root @ locahost,则只能从同一服务器连接。 因此,创建一个允许通过IP连接的用户。 我想用户应该从尝试连接的盒子中获取IP。

CREATE USER '<username>'@'<ip from the box>' IDENTIFIED BY '<password>';

您需要给他适当的权利。 以下代码应授予他所有权利。 您可能不需要。

GRANT ALL PRIVILEGES ON <database name>.* TO '<username>'@'<ip from the box>';

i)u在库文件夹中添加一个mysql连接器jar文件,然后右键单击lib-> buildpath-> configurebuildpath,然后它将显示输入对话框的属性,然后单击library-> addexternal jar->添加您的jar文件,下次单击顺序并支持->选择所有项目->单击确定。 ii)转到您的项目,右键单击bulidpath-> configure buildpath-> ok

如果您确实做这些事,那么请在您的数据库中检查您的同姓。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM