我是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)
答案 0 :(得分:0)
您的应用程序与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>';
答案 1 :(得分:-1)
i)你在你的库文件夹中添加一个mysql连接器jar文件,然后右键单击lib-&gt; buildpath-&gt; configurebuildpath然后它将显示输入对话框的属性,然后单击library-&gt; addexternal jar-&gt;添加您的jar文件,然后单击订单和支持 - >选择所有项目 - >单击确定。 ii)转到你的项目右键单击bulidpath-&gt;配置buildpath-&gt; ok
如果您确实这样做了,请在您的数据库中检查您的coloumn名称。