Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/07/2004, 17h30   #1
Membre confirmé
 
Avatar de onet
 
Inscription : décembre 2002
Messages : 365
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : décembre 2002
Messages : 365
Points : 283
Points : 283
Envoyer un message via MSN à onet Envoyer un message via Skype™ à onet
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 :
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
__________________
---
Retrouvez tout mes tutos et mes articles: http://www.olivierlange.com
onet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2004, 18h18   #2
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
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 :
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, 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 (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2004, 21h45   #3
Membre confirmé
 
Avatar de onet
 
Inscription : décembre 2002
Messages : 365
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : décembre 2002
Messages : 365
Points : 283
Points : 283
Envoyer un message via MSN à onet Envoyer un message via Skype™ à onet
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
__________________
---
Retrouvez tout mes tutos et mes articles: http://www.olivierlange.com
onet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2004, 22h17   #4
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
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, 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 (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2004, 23h47   #5
Membre confirmé
 
Avatar de onet
 
Inscription : décembre 2002
Messages : 365
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : décembre 2002
Messages : 365
Points : 283
Points : 283
Envoyer un message via MSN à onet Envoyer un message via Skype™ à onet
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
__________________
---
Retrouvez tout mes tutos et mes articles: http://www.olivierlange.com
onet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2004, 00h39   #6
Membre confirmé
 
Avatar de onet
 
Inscription : décembre 2002
Messages : 365
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : décembre 2002
Messages : 365
Points : 283
Points : 283
Envoyer un message via MSN à onet Envoyer un message via Skype™ à onet
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 :
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
__________________
---
Retrouvez tout mes tutos et mes articles: http://www.olivierlange.com
onet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h31.


 
 
 
 
Partenaires

Hébergement Web