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

Administration MySQL Discussion :

permettre un create user a un utilisateur


Sujet :

Administration MySQL

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut permettre un create user a un utilisateur
    Bonjour à tous,


    Je me permets de poster, je suis un peu perdu en ce qui concerne les droits des user dans la base mysql.

    En fait j'ai créé un utilisateur autre que root, avec tous les droits (enfin justement pas vraiment), qui doit pouvoir se connecter à partir du domaine de mon entreprise.

    Je souhaite qu'il puisse ajouter un user dans la table de la base mysql, et qu'il puisse lui donner certains privilèges.

    La connexion se fait correctement,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    string ConnectionStr = "Database=mysql;Data Source=" + ip_du_pc + ";User Id=root;Password=mdp";
     
                Connection.ConnectionString = ConnectionStr;
     
                // Ici, on ouvre la connexion au serveur
                Connection.Open();
    Seulement lorsque je veux effectuer la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    string Requete1 = "CREATE USER '" + user.identifiant + "'@'%' IDENTIFIED BY '" + user.motdepasse + "';";
     
                MessageBox.Show(Requete1);
     
                // On associe cette requête à la propriété SelectCommand du MySqlDataAdapter
                MyAdapter.SelectCommand = new MySqlCommand(Requete1, Connection);
                MyAdapter.SelectCommand.ExecuteNonQuery();
    J'ai l'erreur classique de CREATE USER failed. J'ai checké un peu, mais je me perds dans toutes les infos.
    C'est parce que ya que le root/localhost qui a les droits SUPER c'est ça ?

    Puis-je les donner à l'utilisateur créé ?
    Enfin si vous pouviez m'aiguiller sur ce sujet. Merci.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    C'est dangereux ce que tu fais là !

    En plus avec @% tu autorises les connexions depuis n'importe quelle IP !

    Ceci dit, sauf erreur de ma part, pour lemoment ton code ne fait que céer un utilisateur MySQL sans aucun droit.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut
    Oui tout a fait, et en fait à la suite dans le code je GRANT les privilèges à l'utilisateur que je viens de créer.
    Mais bon comme je peux pas créer.... ?

    Je suis d'accord que c'était dangereux, mais au final je serais hébergé sur un intranet donc je vais pas laisser % je pense.
    Sinon du coup si je veux créer un utilisateur, je me connecte en root dans le soft c'est la seule solution?

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Je ne suis pas sûr de comprendre ton besoin mais j'ai l'impression que tu as juste besoin d'un utilisateur MySQL pour que l'application puisse se connecter et interroger la BDD.

    Si c'est ça, crée 1 utilisateur pour l'application qui n'a les droits que sur la BDD utilisée par l'appli puis paramètre dans l'appli la connexion à la BDD avec le bon login et le bon mot de passe de cet utilisateur. C'est classique.

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GRANT ALL PRIVILEGES ON la_bdd TO 'nom_user'@'ip_du_serveur_de_l_appli' IDENTIFIED BY un_mot_de_passe
    L'avantage de cette commande est qu'elle crée l'utilisateur en même temps qu'elle lui donne les droits.

    Et l'appli utilisera toujours cet utilisateur pour accéder à la BDD.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut
    En fait si je devais expliquer le contexte pour comprendre pourquoi c'était confus dans ma tête.

    J'ai développé un site web d'aide en ligne pour les mainteneurs de l'entreprise ou je fais mon stage.

    Les mainteneurs qui se connecteront doivent pouvoir effectuer quelques Select, quelques Insert sur certaines tables pas plus.

    Mais en plus de cela j'ai créé un soft a coté, uniquement pour l'entreprise, qui leur permet d'alimenter la base de données (Ajout de table, remplissage, etc... )
    et également d'ajouter un utilisateur, pour que seuls ceux ayant été ajoutés par l'entreprise puisse aller sur le site web.

    Donc je me suis un peu perdu parmi tout ça.

    Mais en fait je n'ai besoin de créer qu'un seul utilisateur ayant les droits spécifiques aux mainteneurs, et en revanche je crée une table dans ma base avec identifiant/mot de passe pour chaque mainteneur afin qu'il puisse accéder au site.
    Et a partir de ce site, je me connecte dans tous les cas avec le seul utilisateur créé.

    C'est bien ça la logique ?

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Tanoak_LaCapuche Voir le message
    En fait si je devais expliquer le contexte pour comprendre pourquoi c'était confus dans ma tête.
    Déjà la phrase est confuse !

    J'ai développé un site web d'aide en ligne pour les mainteneurs de l'entreprise ou je fais mon stage.
    Jusque là c'est clair.

    Les mainteneurs qui se connecteront doivent pouvoir effectuer quelques Select, quelques Insert sur certaines tables pas plus.
    Directement sur la BDD ou à travers une application dans laquelle sont programmées les requêtes en fonction des actions de l'utilisateur ?
    C'est le plus souvent ainsi qu'on pratique ; on ne donne pas la main directement à l'utilisateur sur le SGBD mais à travers une application.

    Mais en plus de cela j'ai créé un soft a coté, uniquement pour l'entreprise, qui leur permet d'alimenter la base de données
    Ça c'est plutôt classique.
    (Ajout de table, remplissage, etc... )
    Ça c'est moins classique !
    En principe, on définit le modèle de données et on n'y touche que très rarement. L'ajout de table est plutôt du ressort d'un DBA ou du développeur de l'application lors d'une évolution majeure de celle-ci.
    Sauf dans de rares cas, l'utilisateur ne crée jamais de tables. Il ne fait que les remplir, mettre à jour des données ou en supprimer au travers de l'application.

    et également d'ajouter un utilisateur, pour que seuls ceux ayant été ajoutés par l'entreprise puisse aller sur le site web.
    Donc ça c'est une gestion des utilisateurs de l'application, pas des utilisateurs MySQL.

    Donc je me suis un peu perdu parmi tout ça.
    On dirait oui !

    Mais en fait je n'ai besoin de créer qu'un seul utilisateur ayant les droits spécifiques aux mainteneurs, et en revanche je crée une table dans ma base avec identifiant/mot de passe pour chaque mainteneur afin qu'il puisse accéder au site.
    Et a partir de ce site, je me connecte dans tous les cas avec le seul utilisateur créé.
    Si tu dois, comme je crois le comprendre, gérer l'accès des utilisateurs de l'application web, ta base de données doit comporter une table des utilisateurs de cette application, éventuellement associée à une table des groupes d'utilisateurs et /ou à une table des droits sur les fonctions de l'application.

    Le schéma classique est le suivant (MCD méthode Merise)
    Utilisateur -1,1----appartenir----0,n- groupe -0,n----avoir----0,n- droit

    Ce qui entraîne les tables suivantes :
    droit (drt_id, drt_libelle...) => Par exemple : 1, 'administration du site'
    groupe (grp_id, grp_libelle) => Par exemple : 1, 'Administrateurs' / 2, 'Utilisateurs simples'
    grp_avoir_drt (gad_id_groupe, gad_id_droit)
    utilisateur (usr_id, usr_id_groupe, usr_login, usr_mot_passe, usr_nom, usr_prenom...)

    Par ailleurs, l'application utilise un utilisateur MySQL pour se connecter à MySQL et lui soumettre les requêtes. cet utilisateur est créé manuellement par le DBA ou le développeur une seule fois à l'aide de la commande que j'ai donnée dans mon précédent message.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut
    Re,

    Merci d'avoir pris autant de temps pour me répondre.

    Directement sur la BDD ou à travers une application dans laquelle sont programmées les requêtes en fonction des actions de l'utilisateur ?
    C'est le plus souvent ainsi qu'on pratique ; on ne donne pas la main directement à l'utilisateur sur le SGBD mais à travers une application.
    C'est du PHP depuis le site web a travers des formulaires, donc oui c'est directement sur la SGBD. A travers une application ?

    Sauf dans de rares cas, l'utilisateur ne crée jamais de tables. Il ne fait que les remplir, mettre à jour des données ou en supprimer au travers de l'application.
    L'entreprise doit pouvoir ajouter un projet complet quand celui est développé, et disons que pour la structure des tables c'est transparent pour elle, tout est codé dans le soft.

    Par ailleurs, l'application utilise un utilisateur MySQL pour se connecter à MySQL et lui soumettre les requêtes. cet utilisateur est créé manuellement par le DBA ou le développeur une seule fois à l'aide de la commande que j'ai donnée dans mon précédent message.
    Tout à fait, ça rejoint ce que j'avais fini par comprendre, merci. C'est ce que j'ai fait.

    Dernière petite question, j'ai créé la table pour de simples utilisateurs comme conseillé, et je voudrais hasher le champ mot_de_passe. (La c'est en dur et pas cool)
    Je peux le faire directement du soft grâce à .NET ou vaut mieux le faire a partir de la base une fois rentré ?
    Je ne vois pas trop comment faire ça.

    Merci encore.

  8. #8
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Tanoak_LaCapuche Voir le message
    C'est du PHP depuis le site web a travers des formulaires, donc oui c'est directement sur la SGBD. A travers une application ?
    Non, c'est à travers l'application.
    Tes utilisateurs ne se connectent pas directement à MySQL, même via une interface graphique d'administration de MySQL genre phpMyAdmin ou MySQL Workbench, ils n'interrogent et modifient les données qu'à travers ton application développée en PHP. Ils doivent donc se connecter à ton application, pas directement à MySQL ; c'est l'application qui se connecte à MySQL.

    L'entreprise doit pouvoir ajouter un projet complet quand celui est développé, et disons que pour la structure des tables c'est transparent pour elle, tout est codé dans le soft.
    Ajouter un projet, c'est ajouter une ligne dans la table des projets. Pas besoin de créer une table par projet ; c'est un non sens d'utiliser une base de données comme ça !

    Dernière petite question, j'ai créé la table pour de simples utilisateurs comme conseillé, et je voudrais hasher le champ mot_de_passe. (La c'est en dur et pas cool)
    Je peux le faire directement du soft grâce à .NET ou vaut mieux le faire a partir de la base une fois rentré ?
    Je ne vois pas trop comment faire ça.
    Il y a plusieurs fonctions de hashage dans MySQL.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 179
    Points : 153
    Points
    153
    Par défaut
    D'accord, merci beaucoup.

    Oui c'est vrai que je peux rajouter une ligne dans projets... Et l'index correspondant dans la base déjà créée.

    Je te remercie d'avoir été à l'écoute ! (Surtout que ça devait pas être facile avec un paumé )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. create user wizard
    Par zerocoolyoussef dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/05/2007, 10h32
  2. Problème avec le controle "create user wizard"
    Par iTanger dans le forum ASP.NET
    Réponses: 2
    Dernier message: 09/05/2007, 10h22
  3. create user dynamique
    Par Mihalis dans le forum Bases de données
    Réponses: 8
    Dernier message: 13/03/2007, 16h29
  4. CREATE USER / tablespace d'index
    Par Carlito_superheros dans le forum Oracle
    Réponses: 10
    Dernier message: 25/10/2005, 14h46
  5. create user, affectation droits et scripts sql
    Par hirochirak dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 03/02/2004, 10h21

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