Je connecte Java en utilisant Eclipse avec MySQL db
CODE
import Java.sql.*;
import Java.io.*;
public class DbDemo {
public static void main(String args[]) throws ClassNotFoundException, SQLException {
String s;
String uname="root@localhost";
String url="jdbc:mysql://localhost:3306/student";
String password="Hsun123";
int i;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con=DriverManager.getConnection(url,uname,password);
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select * from student_detail");
if(rs.next()) {
i=rs.getInt(1);
s=rs.getString(2);
System.out.println(i+"/t"+s);
}
rs.close();
st.close();
con.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
ERREUR
Java.sql.SQLException: Access denied for user 'root@localhost'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.Java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.Java:3597)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.Java:3529)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.Java:935)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.Java:4101)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.Java:1300)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.Java:2337)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.Java:2370)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.Java:2154)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.Java:792)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.Java:47)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at Sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at Sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at Java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.Java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.Java:381)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.Java:305)
at Java.sql.DriverManager.getConnection(Unknown Source)
at Java.sql.DriverManager.getConnection(Unknown Source)
at database.DbDemo.main(DbDemo.Java:13)
Que dois-je faire pour résoudre mon problème?
À la place d'utiliser :
String uname="root@localhost";
Utilisation :
String url="jdbc:mysql://localhost:3306/student";
String userName="root"
String password="Hsun123"
...
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con=DriverManager.getConnection(url,username,password);
...
Cela devrait fonctionner (à condition de définir un mot de passe valide)
Si vous connectez un serveur mysql distant à partir de votre machine locale en utilisant Java, suivez les étapes ci-dessous.
cPanel ou d’autres autorisent l’accès à distance pour votre adresse IP locale.
Dans le message d'erreur ci-dessus: "101.123.163.141" est l'adresse IP de l'ordinateur local. Donc, nous devons d'abord donner un accès à distance dans cPanel-> Remote MySQL® . Ensuite, lancez votre application pour vous connecter.
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(
"jdbc:mysql://www.xyz.com/abc","def","ghi");
//here abc is database name, def is username and ghi
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from employee");
while(rs.next())
System.out.println(rs.getInt(1)+" "+rs.getString(2)+"
"+rs.getString(3));
con.close();
J'espère que cela résoudra votre problème.
Merci
Eh bien, même problème ici. J'utilise phpmyadmin.
Je devais aller à phpmyadmin->users->root->Edit Privileges.
Ensuite, sur le champ "Database-specific privileges
", je devais fournir des privilèges pour ma base de données.
Sur le champ "Change password
", j'ai retapé mon mot de passe (je ne sais pas pourquoi je devais le faire, peut-être un bogue possible puisque j'en avais déjà un).
Sur le champ "Login Information->Host
" j'ai mis la valeur N'importe quel hôte.
Problème résolu.
Assurez-vous de disposer d’un compte utilisateur privilégié (droits nécéssaires) avec le mot de passe correct dans votre base de données. ou tout simplement pas de mot de passe du tout
Pour ceux qui souffrent de ce problème
Java.sql.SQLException: accès refusé pour l'utilisateur 'root' @ 'localhost'
(en utilisant le mot de passe: OUI)
La solution pour cela est:
Quel que soit le mot de passe que vous fournissez sur cette ligne dans votre code
Connection con=DriverManager.getConnection(
"jdbc:mysql://localhost:3306/Pravin","root","password");
Pas besoin de fournir ce mot de passe, insérez simplement ""
Le code complet est:
import Java.sql.*;
class TestDB{
public static void main(String args[]){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection( "jdbc:mysql://localhost:3306/Pravin","root","");
//here sonoo is database name, root is username and password
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("select * from student");
while(rs.next())
System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getString(3));
con.close();
}catch(Exception e){
System.out.println(e);
}
}
essaye ça...
String password="Hsun123";
au lieu de
String password="";