我有一个谜。
我正在尝试连接到VM上的mysql服务器(ip:192.168.60.96
,在我自己的机器上运行,通过网桥连接到网络)。
完整的系统信息:
主持人:
Fedora 20
Virtualbox 4.3.16
Eclipse 4.3
MySql-connector-java 5.1.33
虚拟机:
Debian 6
MySql 5.1.73
平均没关系 PhpMyAdmin运行正常
以下是我试图开始工作的代码:
/*
* Cr�� le 24 sept. 2012
*
* TODO Pour changer le mod�le de ce fichier g�n�r�, allez � :
* Fen�tre - Pr�f�rences - Java - Style de code - Mod�les de code
*/
package sec.tests;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class TestSgbd {
public static void main(String[] args) {
// TODO Raccord de m�thode auto-g�n�r�
String url = "jdbc:mysql://192.168.60.96:3306/secolog";
System.out.println(url);
try {
System.out.println("chargement du driver");
Class.forName("com.mysql.jdbc.Driver");
System.out.println("r�cup�ration de la connexion");
Connection con = DriverManager.getConnection(url,"usecolog","password");
System.out.println("cr�ation d'un statement");
Statement requete = con.createStatement();
System.out.println("execution d'une requete");
ResultSet resultat = requete.executeQuery("select * from CLIENT");
while (resultat.next()) {
System.out.println(resultat.getString(1)+" "+resultat.getString(2));
};
System.out.println("fin");
}
catch(Exception e) {
System.out.println("Exception");
e.printStackTrace();
}
}
}
以下是例外:
jdbc:mysql://192.168.60.96:3306/secolog
chargement du driver
r�cup�ration de la connexion
Exception
java.sql.SQLException: Access denied for user 'usecolog'@'192.168.60.97' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3887)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3823)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:870)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4332)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1258)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2234)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at sec.tests.TestSgbd.main(TestSgbd.java:24)
有什么想法吗?
答案 0 :(得分:0)
该消息表示不允许用户usecolog
访问主机192.168.60.97
中的数据库。因此,您必须在数据库中为您的用户提供访问数据库表单的权限(或从主机字段中的任何位置通过%
。当客户端通过DHCP获得动态IP地址时,这可能很有用。)< / p>
GRANT ALL PRIVILEGES ON secolog.* TO usecolog@'192.168.0.97' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;
FLUSH PRIVILEGES;
答案 1 :(得分:0)
它没有连接到错误的IP,错误消息是在谈论客户端:
java.sql.SQLException: Access denied for user 'usecolog'@'usecolog' (using password: YES)
这意味着usercolog无权从192.168.60.97 IP连接到您的数据库。您需要为usercolog设置priveleges以便从您的计算机IP建立连接。
要设置priveleges,请使用以下命令:
GRANT ALL PRIVILEGES ON secolog.* TO 'usecolog'@'%192.168.60.97' IDENTIFIED BY 'secologuserpassword';
FLUSH PRIVILEGES;