J'essaie de me connecter à une base de données MySql à partir d'une application de test en Java. Je viens de suivre un tutoriel que j'ai trouvé en ligne. Le code fonctionne (et compile OK), mais je ne peux pas me connecter à la base de données et aller chercher n'importe quoi. Obtenir l'erreur:Java et MySql: la console ajoute '@'% 'au nom d'utilisateur db
1:
Erreur de connexion DB: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Accès refusé pour l'utilisateur '******' @ '%' à la base de données ' ***** _ javaapp ' java.lang.NullPointerException
Pourquoi Java ajoute-t-il les symboles' @ 'et'% 'dans la console? Est-ce la raison pour laquelle je ne peux pas me connecter?
Je ne suis pas en mesure de modifier priveliges sur l'utilisateur db. Il est juste réglé sur "par défaut" Je devine par le fournisseur ISP ...
J'ai discuté de ce problème '@' & '%' avec mon ami, et je comprends que ces symboles sont la syntaxe MySql pour "accepter n'importe quoi" , mais je ne sais toujours pas quoi faire pour le fixer comme mon MySql knowlede est limitée ..
Si je modifie quelques détails dans la connexion db je reçois parfois:
2:
erreur de connexion dB : com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: échec de liaison de communication
Le dernier paquet envoyé avec succès au serveur était il y a 0 millisecondes. Le pilote n'a reçu aucun paquet du serveur. java.lang.NullPointerException
Mon code Ma principale classe:
package test;
import java.awt.EventQueue;
public class Main {
private JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
// DB CONNECT
DBConnect connect = new DBConnect();
connect.getData();
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Main window = new Main();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Main() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Ma classe de connexion:
package test;
import java.sql.*;
public class DBConnect {
private Connection con;
private Statement st;
private ResultSet rs;
public DBConnect() {
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://mywebhostadress:3306/some_db_name","some_db_user", "somepassword");
st = con.createStatement();
} catch (Exception ex) {
System.out.println("Error connecting to DB: " + ex);
}
}
public void getData() {
try {
String query = "select * from Client";
rs = st.executeQuery(query);
System.out.println("Records from db: ");
while (rs.next()) {
String org_number = rs.getString("org_number");
String org_name = rs.getString("org_name");
System.out.println("org_number: " + org_number + "org_name: " + org_name);
}
} catch (Exception exgetData) {
System.out.println(exgetData);
}
}
}
Merci pour tous les conseils serviable!
MISE À JOUR:
Hmmm ...
Dans MySQL Workbench je parviens à configurer la connexion OK ... Mais je reçois la même erreur ici:
« Le compte que vous utilisez actuellement ne »
Également, en essayant de transférer l'ingénieur dans MySQL Workbench: ERROR 10 44: Accès refusé pour l'utilisateur « some_db_user » @ « % » à la base de données « nouveau_schema » instruction SQL: CREATE SCHEMA new_schema
J'ai aussi essayé de le faire directement dans phpMyAdmin, mais je peux voir cette erreur sur la page d'accueil:
« Créer une nouvelle base de données - Aucun privilège »
J'ai essayé d'accorder mon défaut (et seulement) l'utilisateur tous les droits que je peux donner, mais qu'il ne soit pas accepté quand je fais une requête dans phpMyAdmin. Je devine c'est pourquoi je ne peux pas y accéder à partir de mon application Java. Mais je pourrais taper quelque chose de mal ...
devrait-il pas:
GRANT ALL PRIVILEGES ON some_db_name * TO 'some_db_user' @ '% de' AVEC OPTION DE SUBVENTION;. ?
(extrait de: this post)
je reçois: Erreur requête SQL: GRANT ALL PRIVILEGES ON some_db_name. * A 'some_db_user '@' %' AVEC GRANT OPTION MySQL a déclaré:
C'est Java, pas JAVA – gprathour
Bon à savoir. Merci pour l'information! – CustomCase
La deuxième erreur est simplement une erreur de connexion. Essayez d'accéder à votre base de données MySQL via le client en ligne de commande MySQL ou Workbench pour vérifier s'il est en place. – ydaetskcoR