Bonjour,
je suis étudiant et novice en java. J'ai donc un projet qui consiste à gérer un groupe de personnes via une base de données MySQL installée sur un serveur multiservices CentOS 5.2 distant et mis à jour.
J'ai un utilisateur base_drh avec un mot de passe base_drh qui a tous les droits sur ma base de données MySQL appelée également base_drh. J'ai fait exprès de donner le même nom à tout pour éviter de me perdre durant mes tests.
J'ai installé phpMyAdmin sur ce serveur pour administrer ma base de données et j'ai aucun problème pour me connecter, faire des créations,ajouts,modifications et suppressions.
Sur mon serveur CentOS, voici les paquets que j'ai concernant mysql et jav :
root@sd-692 ~# rpm -qa | grep mysql
php-mysql-5.1.6-20.el5_2.1
mysql-server-5.0.45-7.el5
mysql-5.0.45-7.el5
root@sd-692 ~# rpm -qa | grep java
java-1.6.0-openjdk-1.6.0.0-1.0.b12.el5.2
tzdata-java-2007k-0.3.el5
Aucun problème jusque là.
Sur mon Eclipse,j'installe le connecteur mysql-connector-java-5.1.7-bin.jar que j'ai installé en faisant click droit sur mon Projet/Properties/JavaBuild Path/Libraries/Add External JARs et pas de problèmes.
Voici mon code java dans Eclipse
import java.io.*;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
public class SqlRequete {
public SqlRequete()
{
}
public static void main(String[] args)
{
Connection connection;
BaseDeDonnee basededonnee = new BaseDeDonnee();
}
}
class BaseDeDonnee
{
Connection connection = null;
public BaseDeDonnee()
{
connexion();
//affichage();
fin_connexion();
}
// Connexion à la base de donnees
public void connexion ()
{
try
{
// Chargement des drivers SQL
System.out.println("\n------------------------");
System.out.println("Connexion au driver JDBC.");
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("Driver com.mysql.jdbc.Driver chargé.");
}
catch (ClassNotFoundException a)
{
System.out.println ("Driver non trouve.");
}
catch (Exception b)
{
System.out.println ("Problème sur chargement de driver JDBC.");
}
try
{
// Etablissement de la connexion avec la base
connection = DriverManager.getConnection("jdbc:mysql://hostname_de_mon_serveur:3306/base_drh","base_drh","base_drh");
System.out.println("Connexion a la base établie.");
System.out.println("------------------------\n");
}
catch (SQLException c)
{
System.out.println ("Connexion refuse ou base inconnue.");
System.out.println("SQLException: " + c.getMessage());
System.out.println("SQLState: " + c.getSQLState());
System.out.println("SQLIterator: " + c.iterator());
System.out.println("ErrorCode: " + c.getErrorCode());
System.out.println("");
}
catch (Exception d)
{
System.out.println ("Problème sur connexion.");
}
}
/*public void affichage()
{
//ResultSet rs = null;
try
{
// Exécution des requêtes
//Statement stmt = connection.createStatement();
//String requete = null;
//requete = "INSERT INTO `table` ( `champ` ) VALUES ( 'EGG' )";
//requete = "SELECT * FROM `table` ORDER BY `champ` ASC LIMIT 0 , 30";
//rs = stmt.executeQuery(requete);
Statement stmt = connection.createStatement() ;
String queryString = "INSERT INTO `table` ( `champ` ) VALUES ( 'EGG' )";
int update = stmt.executeUpdate(queryString);
System.out.println (update);
//while (rs.next())
// {
// Affichage les resultats de la requete SQL
//System.out.println("Champ : "+rs.getString(1));
//System.out.println("Prenom : "+rs.getString(2));
//System.out.println("Adresse : "+rs.getString(3));
//System.out.println("");
// }
}
catch (Exception d)
{
System.out.println ("Problème de la requete.");
}
}*/
public void fin_connexion()
{
try
{
// Fermeture de la connexion
connection.close();
System.out.println("\n------------------------");
System.out.println ("Fermeture de connexion.");
System.out.println("------------------------\n");
}
catch (Exception d)
{
System.out.println ("Problème sur la fermeture de connexion.");
}
}
}
Il n'y a aucune erreur de code détectée par Eclipse. Toutefois, je n'arrive pas à me connecter à la base MySQL et je ne comprends pas pourquoi. Voici les erreurs de connexion SQL qui me sont renvoyés en console :
------------------------
Connexion au driver JDBC.
Driver com.mysql.jdbc.Driver chargé.
Connexion refuse ou base inconnue.
SQLException: null, message from server: "Host 'monpc.freebox.fr' is not allowed to connect to this MySQL server"
SQLState: HY000
SQLIterator: java.sql.SQLException$1@86f241
ErrorCode: 1130
Problème sur la fermeture de connexion.
Mon fichier /etc/my.cnf ressemble à ça :
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Dans mon fichier /etc/hosts.allow, j'ai ça :
MYSQLD: ALL
