IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Connection à MySQL v5 - Forcer le "host" à inclure le nom de l'utilisateur


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2003
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 71
    Par défaut Connection à MySQL v5 - Forcer le "host" à inclure le nom de l'utilisateur
    bonjour à tous,

    j'ai une application qui se connecte à MySQL (version 5.0.28, driver 5.0.7) avec un user générique, disons "user_data".
    Du coup, lorsque l'on a un ou plusieurs utilisateurs qui se connectent, on les voit apparâitre ainsi dans MySQL Administrator :
    "user_data@[Machine].[adresse Web]" (user@host), par exemple : "user_data@MachineA01.mon-entreprise.fr"
    (ou, en SQ : "select system_user();")

    Or, pour des raisons de tracabilité, je voudrais que le champ "host" inclut, non le numéro de machine, mais le login ou identifiant de l'utilisateur, soit quelquechose comme ça :
    "user_data@tintin.mon-entreprise.fr"
    "user_data@dupond.mon-entreprise.fr"
    "user_data@dupont.mon-entreprise.fr"
    etc ...

    Il semble possible, en tout cas sur d'autres bases de données, de forcer le champ "host", via le paramètre "localSocketAddress".

    Mais aucun de ces deux codes ne fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    try{
                    Properties properties = new Properties();
                    properties.setProperty("user", "user_data");      // ok
                    properties.setProperty("password", "user_date_pwd");
                    properties.setProperty("localSocketAddress", "tintin"); 
                    Connection conn2 = DriverManager.getConnection([urlBdd], properties);    // ne marche pas
                    System.out.println("Type Map of Connection : "+conn2.getTypeMap());
                    System.out.println("User = "+conn2.getMetaData().getUserName());    // equivalent MySQL : select system_user();
                    System.out.println("URL = "+conn2.getMetaData().getURL());
                    System.out.println("localSocketAddress (by properties) = "+properties.getProperty("localSocketAddress"));
                    System.out.println("System Functions = "+conn2.getMetaData().getSystemFunctions());
                    //conn2.close();
                }catch(Exception ex){
                    System.err.println("Erreur à la 2ème connection");
                    //ex.printStackTrace();
                }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    try{
                    Properties properties = new Properties();
                    properties.setProperty("user", "user_data");      // ok
                    properties.setProperty("password", "user_date_pwd");
     
                    Connection conn3 = DriverManager.getConnection([urlBdd]+"?localSocketAddress=tintin", properties);  // ne marche pas 
                    //Connection conn3 = DriverManager.getConnection([urlBdd]+"?localSocketAddress=\"tintin\"", properties);  // se connecte a la base mais le "host" n'affiche pas ce que l'on desire ... 
                    System.out.println("Type Map of Connection : "+conn3.getTypeMap());
                    System.out.println("User = "+conn3.getMetaData().getUserName());    // equivalent MySQL : select system_user();
                    System.out.println("URL = "+conn3.getMetaData().getURL());
                    System.out.println("localSocketAddress (by properties) = "+properties.getProperty("localSocketAddress"));
                    System.out.println("System Functions = "+conn3.getMetaData().getSystemFunctions());
                    //conn3.close();
                }catch(Exception ex){
                    System.err.println("Erreur à la 3ème connection : "+ex.getMessage());
                    //ex.printStackTrace();
                }
    Le genre d'erreur affiché est celui ci :
    ** BEGIN NESTED EXCEPTION **

    java.net.UnknownHostException
    MESSAGE: NomUtilisateurQuiSeConnecte: NomUtilisateurQuiSeConnecte

    STACKTRACE:

    java.net.UnknownHostException: NomUtilisateurQuiSeConnecte: NomUtilisateurQuiSeConnecte
    at java.net.InetAddress.getAllByName0(InetAddress.java:1011)
    at java.net.InetAddress.getAllByName0(InetAddress.java:981)
    at java.net.InetAddress.getAllByName(InetAddress.java:975)
    at java.net.InetAddress.getByName(InetAddress.java:889)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:295)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:271)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2744)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1553)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
    at java.sql.DriverManager.getConnection(DriverManager.java:512)
    at java.sql.DriverManager.getConnection(DriverManager.java:140)
    at fr.mon-entreprise.TestDB.main(TestDB.java:70)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)


    ** END NESTED EXCEPTION **


    Quelqu'un sait il s'il est possible de forcer le "host" de MySQL, et si oui comment ?


    Cordialement,

  2. #2
    Membre chevronné Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Par défaut
    La gestion de la transformation des URL étant laissée aux pilotes JDBC, chacun peut interpréter les URL comme il veut, et les informations d'authentifications ne sont pas nécessairement passées par ce biais ...

Discussions similaires

  1. [MySQL] Sauvegarder du texte (db mysql) CR, single-quote, double-quote, etc
    Par vandeyy dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/03/2007, 12h22
  2. [Kylix] Pb connection à Mysql
    Par Anonymous dans le forum EDI
    Réponses: 3
    Dernier message: 25/04/2002, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo