Utilisateurs et databases

Résolu
bonxp Messages postés 29 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 9 novembre 2008 - 28 nov. 2007 à 22:15
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 - 29 nov. 2007 à 20:45
Bonsoir,

Je voulais savoir comment faire dans mysql pour que quand quelqu'un se logue avec phpmyadmin il est que l'accès a ses bases et pas a celles des autres.

Un exemple pour que vous puissiez mieux situer ma question :

Lorsqu'on est chez un hébergeur et qu'on créé ses bases de donnés et les utilisateurs qui y ont accès et bien dès qu'on se logue on ne voit que les bases qu'on a créés et pas celles des autres; pourtant on est toujours sur @localhost.

Pourtant moi avec EasyPHP bah j'ai beau créé plusieurs utilisateurs et me logué il me ressort tout le temps les même bases.

Alors voila j'aimerais qu'on m'explique comment cela ce passe.

11 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
28 nov. 2007 à 22:46
Salut,

Normalement, c'est automatique. PMA n'affiche que les bases sur lesquelles l'utilisateur a une permission (quelconque).
Quelle version de PMA tu as ? Quelle méthode de connexion utilises-tu ?

Si les utilisateurs ont une unique base portant le même nom et que tu utilises la l'authentification HTTP, alors tu dois pouvoir limiter grâce à cette ligne :
$cfg['Servers'][$i]['only_db'] = $_SERVER['PHP_AUTH_USER'];

Mais sinon, sur mon serveur, je n'ai pas de problème : les utilisateurs n'ont de permissions que sur leurs bases, et aucune autre n'apparait dans la liste des bases du serveur... Il n'y a donc rien à faire, si ce n'est vérifier les permissions des utilisateurs.
3
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
29 nov. 2007 à 04:34
Regarde voir du coté de GRANT, si je ne me trompe pas
3
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
29 nov. 2007 à 19:38
Moui, ais tu ne réponds pas à toutes mes questions ;)
Où est-ce que ça plante ?
Est-ce que la base est bien créée ?

GRANT ne s'utilise qu'une fois que l'utilisateur a été créé au préalable avec CREATE USER :
http://dev.mysql.com/doc/refman/5.0/fr/create-user.html

N'étant pas non plus dba, j'ai du mal à me souvenir à chaque fois des requêtes à exécuter pour créer un utilisateur, comme dans ton cas. Alors, j'en crées un sur PMA, et je pompe la requête. Exemple, création d'un utilisateur "Bidule" avec le mot de passe "machin" :

CREATE USER 'Bidule'@'localhost' IDENTIFIED BY '******';

GRANT USAGE ON * . * TO 'Bidule'@'localhost' IDENTIFIED BY '******' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

GRANT ALL PRIVILEGES ON `Bidule\_%` . * TO 'Bidule'@'localhost';

Première requête : création de l'utilisateur avec son mot de passe, pour le serveur localhost.
Deuxième requête : définition des permissions globales de l'utilisateur. USAGE lui permet de faire quelques requêtes, comme récupérer les infos du serveur, etc.
La dernière donne tous les privilèges sur les bases qui commencent pas le nom de l'utilisateur. Tu peux t'en passer.

Mais pour donner les privilèges sur sa base :

GRANT ALL PRIVILEGES ON `db_Bidule` . * TO 'Bidule'@'localhost';

T'as juste zappé deux requêtes... La création de l'utilisateur, et les permissions globales.
3
bonxp Messages postés 29 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 9 novembre 2008
29 nov. 2007 à 10:12
slt,

Bon alors j'utilise la version 2.6.1 de phpmyadmin (celle de easyphp 1.8) et je suis en méthode par http.

ha oui une chose, je créé les utilisateurs a partir de root dans phpmyadmin qui contient déja des bases.
C'est peut être pour ca ?

je vous explique ce que je fais :

1- je suis dans root
2- je créé un utilisateur quelconque avec comme droit     :
SELECT
INSERT
UPDATE
DELETE
FILE
CREATE
ALTER
INDEX
DROP
CREATE TEMPORARY TABLES

pour qu'il puisse quand même créer ses bases et ses tables.

mais la le problème c'est que quand je me logue bah il me resort les bases de root et moi ca je ne veux pas .

comment créer un utilisateur qui n'ait que un accès a ses bases et pas a celles des autres ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bonxp Messages postés 29 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 9 novembre 2008
29 nov. 2007 à 10:55
slt c'est encore moi,

Bon enfait c'est pas grave je viens de trouver un super tuto ici même (quel con je suis quand je m'y met lol)
-> http://www.phpcs.com/tutorial.aspx?id=275

en tout cas merci a tout les deux.

ah ! juste une dernière question.

Je voudrais simplement savoir si par exemple je veux donner la possiblité a quelqu'un de créer ses bases en php (sa je sait faire) et d'ajouter un user (sa je sait pas faire)

Comment ajouter un user sans passer par phpmyadmin en php ?

Merci d'avance pour vos réponses ! !
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
29 nov. 2007 à 12:21
Salut,

Deux possibilités :
- utiliser une requête GRANT
- insérer un enregistrement (un utilisateur) dans la table User de la base mysql

La doc te dira comment utiliser GRANT. Pour l'insertion, regarde comment est faite la table.

Sinon, tu peux aussi créer un utilisateur et te baser sur un copier/coller de la requête qui est réaffichée par pma
0
bonxp Messages postés 29 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 9 novembre 2008
29 nov. 2007 à 18:49
bonsoir,

bon j'ai encore un pb

j'ai essayé de faire ce que tu m'a dit neigedhiver donc avec GRANT ca donne :

$query = "GRANT ALL PRIVILEGES ON " . $add_base . ".TO " . $add_user . "@localhost IDENTIFIED BY "" . $add_pass . """;

Mais sa marche pas !!!

Merci de m'aider
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
29 nov. 2007 à 18:55
Ca marche pas... C'est à dire ? Il se passe quoi ?
Impossible de s'identifier avec le nouvel utilisateur ?
Un message d'erreur ou pas ?
As-tu bien créé l'utilisateur avant de lui donner les permissions ?
Est-ce que tu essaies bien d'éxécuter la requête avec un user qui a les permissions GRANT globales (root par exemple) ?
0
bonxp Messages postés 29 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 9 novembre 2008
29 nov. 2007 à 19:26
Merci de répondre aussi vite neigedhiver.

je vais mettre tout le code pour que tu puisse voir par toi même:

<?
 
$add_user = "test"; // Nom de l'utilisateur à créer
$add_pass = "test"; // Son mot de passe
$add_base = "db_" . $add_user; // La base va être : db_lenomdutilisateur
 
$sql_host = "localhost"; // Adresse du serveur MySQL
$sql_login = "root"; // Login MySQL
$sql_pass = "210588"; // Pass MySQL
 
 
$link = mysql_connect($sql_host,$sql_login,$sql_pass) or die("Connection au serveur MySQL impossible !");
 
$query = "CREATE DATABASE " . $add_base;
$result = @mysql_query($query);
 
if(!$result){
echo "[BASE] Echec de création de la base
\n";
exit();
}else{
echo "[BASE] Succes !
\n";
}
 
 
$query = "GRANT ALL PRIVILEGES ON " . $add_base . ".TO " . $add_user . "@localhost IDENTIFIED BY "" . $add_pass . """;
$result = @mysql_query($query);
 
if(!$result){
echo "[USER] Echec
\n";
exit();
}else{
echo "[USER] Succes !
\n";
}
 
 
?>
0
bonxp Messages postés 29 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 9 novembre 2008
29 nov. 2007 à 19:56
Oh merci neigedhiver tu est un génie !!!

MERCI MERCI MERCI MERCI MERCI

La base est correctement créé la y a pas de problème.
Et la ou sa plante bah c'était les droits avec GRANT.

Effectivement si l'utilisateur n'est pas créé, c'est évident qu'il ne peut pas faire la requéte des droits de l'utilisateur puisque celui-ci n'existe pas !

Je te remercirais jamais asser Neigedhiver

MERCI beaucoup
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
29 nov. 2007 à 20:45
LoL Mais de rien ^^
0
Rejoignez-nous