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 :

privilège


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Par défaut privilège
    Bonjour,

    Voila, je vous explique mon problème, en espérant que mon topi soit bien situé!

    J'ai un serveur dédié, et j'administre mes bases de donnée avec PHPmyAdmin. Je voudrais pouvoir créer des bases de données qui ne soit visible que par l'utilisitaeur qui les as créer! Mais je souhaite surtout que les utilisateurs puissent les créer eux-meme! je ne veux pas devoir faire le nécessaire chaque fois qu'il y aura une nouvelle base à créer!

    Pour la création de mes base, j'utilise le PHP. En fait, j'ai modifier les pages de PHPmyAdmin directement. Cela fonctionne bien. Le seul problème que j'ai, c'est que je n'arrive pas à donner les privilège que je souhaite... Je vous mets mon code:

    Page db_create.php (lorsque l'on clique sur créer nouvelle base)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
    $db1 = $db;
    $db = $_SESSION['compte'] .'_' .$db1 ;
     
    /**
     * Executes the db creation sql query
     */
    $local_query = 'CREATE DATABASE ' . PMA_backquote($db);
    $result      = PMA_mysql_query('CREATE DATABASE ' . PMA_backquote($db)) or PMA_mysqlDie('', $local_query, FALSE, $err_url);
     
    $result1 = mysql_query("GRANT ALL PRIVILEGES ON `" .$db ."` . * TO \"" .$_SESSION['compte'] ."\"@\"localhost\"");
    ...
    Cela fonctionne bien... Sauf qu'il faut pour cela que le user qui cré ai tout les privilèges... Et dans ce cas, il peut aussi voir les autres base de données, ce qui n'est pas le cas.

    Donc, ma question:
    Comment je peut donner dynamiquement les privilège à un user de créer, voir et modifier ses tables? Le tout bien sur, sans devoir passer par un compte root ou admin (ou si qqu arrive à le faire en trnsparence, ca me convient aussi!)

    Voila, j'espère que je me suis bien fait comprendre, et que mon topic est au bon endroit...

    Onet

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Ce POST serai mieux venu dans le forum PHP, mais bon, passons !!

    il faut en fait, que tu regardes un peu plus le code de phpMyAdmin (promi j'y jetterai moi-même un coup d'oeil dès que j'aurai le temps et je posterai en enfilade !!!)

    bon, je vais te mettre ça en algorithmique, mais je pense que tu sauras l'adapter !! (à mettre dans la fonction creat_db) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    récupération des identifiants de connexion de l'user actuel (host, port, socket, login & mdp);
    connexion en tant que root
    création de la base
    ajout à l'utilisateur des droits nécessaire pour cette base (*)
    fermeture de la connexion root
    ouverture de la connexion user telle qu'elle était avant
    Voilà, ceci doit remplacer la création de la bd et l'assignation des droits...

    (*) : pour trouver les requêtes à faire, elle doivent déjà être dans la fonction create_db (en la creusant un peu, on doit pouvoir trouver sans trop de problème, ils m'ont l'air d'avoir des sources plutôt bien documentées) sinon, fais faire les requêtes à phpMyAdmin et récupère-les...

    Woilà, Bonne Chance, et Bon Courage !!

    Si tu trouves la solution, merci de la poster, ou au moins de le signaler, ça m'évitera d'avoir à chercher pour rien !!
    De plus, je ne pourrais pas faire cette recherche avant longtemps (une semaine ou deux voir trois dans le pire des cas...) donc essaies quand même de faire la recherche toi-même, merci d'avance !!
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre éclairé
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Par défaut
    Salut,

    je te remercie de ta réponse. Et oui, tu m'a bien aidé, ne serais-ce que pour l'algorithme. en fait, je pensais qu'il y avait un moyen pour que la table créer sous un utilisateur spécifique soit directement ratachée à celui-ci!

    Je vais donc me pencher sur le passage par le root! Et oui, pas de prob, je mettrais des infos si j'arrive à faire quelque chose, ne t'inquiète pas!

    merci encore, et le premier qui a une infos, n'hésite pas :-)

    onet

  4. #4
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    En fait si l'utilisateur a les permissions pour créer une table, ça ne poserait pas de problème, mais il faudrait aussi qu'il ait les privilèges GRANT etc... pour pouvoir se donner accès à cette base je sais pas si c'est très sécurisé, s'il a accès à cette base pour distribuer des autorisations, pouruoi pas une autre ???

    alors qu'en faisant comme ça, c'est plus simple, tu gères les accès par couple base/user....
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  5. #5
    Membre éclairé
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Par défaut
    Exactement! Et en plus, comme c'est c que je cherche à faire... Vais plongé dessus! Je reposterais ici, si j'ai un tit souci!

    Onet

  6. #6
    Membre éclairé
    Avatar de onet
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    365
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2002
    Messages : 365
    Par défaut
    Ben en fait, c'est encore plus simple que ce que j'aurais pensé... Je me suis cassé la tête pour rien cet après-midi...

    J'ai fait 2 fichier: Un contenant un petit formulaire pour le nom de la base de donnée, et un fichier qui crée la table et gère les privilèges (je ne te mets que le code du fichier qui cré la table, l'autre c'est un simple formulaire!!!)
    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
     
    <?php
    //connection à la base de donnée
    @ $db = mysql_connect('localhost','XXXXXX,'YYYYYYY');
     
    //Test si la base de donnée à pu être ouverte, annule le script dans le cas contraire
    If (!$db)
      {
      echo ('Erreur, la connexion à la base de donnée n\'est pas disponible');
      exit;
      }
    $nom_base = $_POST['user'] .'_' .$_POST['new_base'];
     
    $result = mysql_query("CREATE DATABASE " .$nom_base);
    $result = mysql_query("GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE on " .$nom_base .".* to " .$_POST['user']);
     
    mysql_close($db);
    ?>
    Encore merci

    Onet

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

Discussions similaires

  1. Probleme privilège SE_SHUTDOWN_NAME
    Par Zetmurin dans le forum C++Builder
    Réponses: 2
    Dernier message: 30/11/2004, 12h08
  2. Ora-1031 (privilèges insuffisants) avec role DBA
    Par Yorglaa dans le forum Administration
    Réponses: 2
    Dernier message: 09/10/2004, 12h15
  3. [DBA] Calcul des Statistiques sans privilèges DBA
    Par Krashtest dans le forum Administration
    Réponses: 14
    Dernier message: 06/05/2004, 16h08
  4. Rôles et Privilèges
    Par PhoneKilleR dans le forum Administration
    Réponses: 10
    Dernier message: 28/10/2003, 11h24

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