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

 MySQL Discussion :

Gestion des utilisateurs


Sujet :

MySQL

  1. #1
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 524
    Par défaut Gestion des utilisateurs
    Bonjour,

    Je développe une application qui sera utilisée par une trentaine de personnes dans une entreprise.
    La base de données sera en MySQL.
    Pour ce qui est des connections de chaque utilisateur, j'ai besoin de conseil.
    Il y aura une personne qui aura tous les droits sur la base de données et qui aura donc un compte utilisateur dédié.
    Mais pour les autres qui auront TOUS les mêmes droits, est-ce que je dois faire un compte par utilisateur sur le server ou bien est-ce que je peux me contenter d'un seul compte qui sera utilisé par tous ? La seconde solution me faciliterait la tâche mais je préfère avoir un avis éclairé avant.

    Merci d'avance de votre aide

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 293
    Billets dans le blog
    17
    Par défaut
    Généralement on distingue les comptes MySQL des comptes applicatifs.

    Perso je procède ainsi :

    MySQL :
    1 compte root avec tous les droits serveur => Utilisé uniquement par l'admin du serveur
    1 compte par application => Le compte application ayant seulement les droits de lecture/écriture sur sa base / ses tables (pas de création/modification de table/vue par ex. ou de SELECT sur des tables inattendues)
    Si l'application a une base dédiée => 1 compte admin pour cette base en particulier

    CREATE USER my_app@localhost IDENTIFIED BY 'P455vv0|`D';
    GRANT INSERT, SELECT, UPDATE ON TABLE my_app_db.* TO my_app@localhost; -- Droits sur toutes les tables de sa base, ici pas de DELETE
    Application :
    Utilisation du compte de l'application uniquement pour tous les utilisateurs de l'application

    https://dev.mysql.com/doc/refman/8.0...eate-user.html
    https://dev.mysql.com/doc/refman/8.0/en/grant.html

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 458
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 458
    Billets dans le blog
    10
    Par défaut
    bonjour,

    il faut créer un compte par utilisateur dans l'application, d'une part parce que ce qui est vrai aujourd'hui (tout le monde a les mêmes droits) ne le sera probablement pas demain, mais aussi pour enregistrer lors de chaque mise à jour l'utilisateur de création (insert) et de modification (update) dans des colonnes dédiées des tables de la BDD.
    Ce type de colonnes permet en cas de problème d'interroger l'utilisateur concerné pour essayer de diagnostiquer ce qui s'est produit. Ça permet aussi de guider les utilisateurs qui font des manipulations erronées et de corriger l'appli voire la BDD (ajout de contraintes CHECK par exemple) si besoin.

    Les droits applicatifs ne sont pas les droits SQL, ce sont deux notions bien distinctes :
    • les premiers sont gérés dans l'application. On crée en général une table des profils métier (responsable client, magasinier, comptable...), chaque profil a accès à des fonctions métier (consulter un compte, créer une commande, mouvementer un stock...) et on rattache ensuite les utilisateurs à ces profils.
    • les deuxièmes sont gérés par les ordres GRANT et REVOKE sur les objets de la BDD

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 524
    Par défaut
    C'est ce que je craignais, 2 avis d'expert différents Déjà, merci pour vos réponses.

    Le plus compliqué c'est que vos avis se valent même j'admets que le suivi individuel grâce au compte MySQL par utilisateur est intéressant (et je n'y avais pas pensé).
    Je suis encore débutant avec MySQL mais je crois qu'il existe une notion de groupe d'utilisateurs un peu comme dans Windows.
    La solution pourrait-elle passer par l'ajout à ces groupes pour gérer les droits tout en sachant qui fera quoi à l'utilisation ?

  5. #5
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 704
    Par défaut
    Salut à tous.

    Citation Envoyé par Papy214
    [Je suis encore débutant avec MySQL mais je crois qu'il existe une notion de groupe d'utilisateurs un peu comme dans Windows.
    On nomme cela des rôles et ce n'est as du tout compliquer à entreprendre. Il faut juste être cohérent dans ce que l'on fait.

    Pour le compte Root, il n'y a aucun problème de compréhension puisqu'il a tous les droits et il est à part puisqu'il est administrateur et non utilisateur. Il ne faut en aucun cas utiliser ce compte root pour accéder à la base d'une manière applicative.

    Pour les comptes utilisateurs, l'analyse de Seb. est bonne mais pas suffisamment fine.
    Il faut d'abord créer les rôles (ou groupe) en attribuant les droits et en faisant la distinction entre les accès à :
    --> la base,
    --> les tables
    --> les colonnes

    Ensuite, tu vas associer un ou plusieurs rôles à chaque utilisateur, comme l'a indiqué Escartefigue. Il ne faut pas répéter les mêmes droits à chaque rôle, comme la lecture et l'écriture. Tu vas créer un rôle pour la lecture et un autre rôle pour l'écriture, voire un troisième rôle pour la mise à jour et quand un utilisateur a besoin de plusieurs rôles, tu ajoutes à celui-ci ce dont il a besoin. En gros, il faut réfléchir sur le découpage des rôles et l'attribution aux utilisateurs. Il se peut dans ton cas que tu as un simple rôle à créer et non plusieurs comme je le suggère.

    L'important est de connaitre qui (l'utilisateur) fait quoi (select, insert, update ou delete) et quand (la date et l'heure). C'est le mouchard qui va historiser tous les accès importants dans une table dédié à la traçabilité des opérations.

    Pour ce qui est des lignes, il faut ajouter une colonne qui va servir à faire la distinction de ce qui est autorisé, et de ce qui ne l'est pas. Cela va se gérer par une View qui va comparer l'identifiant de l'utilisateur à la valeur de la colonne par l'intermédiaire d'une table qui va dire si oui il peut accéder ou pas.

    Cordialement.
    Artemus24.
    @+

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 524
    Par défaut
    Merci à vous trois pour toutes ces explications !
    L'utilisation des rôles me parait la bonne solution et puis ça va me permettre d'apprendre leur fonctionnement.
    Il ne me reste plus qu'à préparer tout ça correctement avant de me lancer.

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