bonxp
Messages postés29Date d'inscriptionvendredi 6 mai 2005StatutMembreDernière intervention 9 novembre 2008
-
28 nov. 2007 à 22:15
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 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.
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 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.
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.
bonxp
Messages postés29Date d'inscriptionvendredi 6 mai 2005StatutMembreDerniè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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
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 ?
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 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) ?
bonxp
Messages postés29Date d'inscriptionvendredi 6 mai 2005StatutMembreDerniè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 !");
bonxp
Messages postés29Date d'inscriptionvendredi 6 mai 2005StatutMembreDerniè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 !