环境:
suse10.2
jdk1.5.0_13
mysql5.0.26
mysql-connector-java-5.1.5
环境变量:
export  JAVA_HOME=/usr/java/jdk1.5.0_13
export  CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:
/usr/local/sdk/jdbc/mysql-connector-java-5.1.5-bin.jar:$JAVA_HOME/lib/mysql-connector-java-5.1.5-bin.jar
export  PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
程序:
import   java.sql.*;  
  public   class   LoadDriver  
  {  
  public   static   void   main(String   args[])  
  {  
  String   driver="com.mysql.jdbc.Driver";  
  String   url="jdbc:mysql://localhost:3306/test?user=javauser&password=javadata&useJvmCharsetConverters=true";
  try  
  {  
   Class.forName(driver);  
  }  
  catch(Exception   e)  
  {  
     System.out.println("无法加载驱动程序:"+driver);  
  }  
  try  
  {  
Connection con=DriverManager.getConnection(url);
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select  * from testdata");  
 while(rs.next())
{
int r1=rs.getInt("ID");
String r2=rs.getString("FOO");
String r3=rs.getString("BAR");
System.out.println("ID:"+r1+"FOO:"+r2+"BAR:"+r3);
}
rs.close();
stmt.close();
con.close();
 } catch(SQLException   ee)  
{  
System.out.println("数据库连接失败!");  
ee.printStackTrace();
}  
}  

错误:
数据库连接失败!
java.sql.SQLException: Access denied for user 'javauser'@'localhost' (using password: YES)
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056)
   at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3376)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3310)
   at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:894)
   at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3808)
   at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1256)
   at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2034)
   at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:730)
   at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:298)
   at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:283)
   at java.sql.DriverManager.getConnection(libgcj.so.7)
   at java.sql.DriverManager.getConnection(libgcj.so.7)
   at LoadDriver.main(LoadDriver.java:18)
说明:单独的运行其他的java程序没问题,用户javauser连接mysql也没问题,
但java程序用javauser用户连接mysql就会报上面的错。我已经被这问题折磨的快不行了,希望大家能帮帮我,先谢了!

解决方案 »

  1.   

    参考:http://access911.net/ocr/doc1.asp?mode=a&bid=005401&aid=4822095
      

  2.   

    LZ可以试试用Class.forName("org.gjt.mm.mysql.Driver").newInstance();代替Class.forName(com.mysql.jdbc.Driver");   
      

  3.   

    用Class.forName("org.gjt.mm.mysql.Driver").newInstance()
    报无法加载驱动程序:org.gjt.mm.mysql.jdbc.Driver
    我用的是mysql-connector-java-5.1.5驱动
    用com.mysql.jdbc.Driver可以加载驱动,不应该是驱动的问题,
    我想是连接数据库的问题,但最让人无奈的是我用javauser连接数据库不报
    Access denied for user  'javauser '@ 'localhost ' (using password: YES),并且可以
    操作数据库的一切数据(当然包括test数据库了)。无奈啊!!
      

  4.   

    刚才没认真看你的错误~!看你的错误,应该是连接时用了密码,估计是你不要用密码,你可以在DOS下转到Mysql安装目录,输入指令mysql -ujavauser -p,然后输入你的密码试下就知道了