Newsgroup: it.comp.www.php
Titolo: utenti mysql

Salve, sto impazzendo un po' con i privilegi di mysql.
Vorrei creare un utente che può vedere solo i suoi database ( e fin qui tutto ok ) ma poi vorrei che questo utente potesse crearsi i suoi database 
 
 
in pratica l'utente root vede tutto
il nuovo utente vedrebbe solo i suoi ma con possibilità di crearne altri
 
 
dopo infiniti smanettamenti ho capito che se gli do i priviligi globali per la creazione di database, poi vede pure i database  che vede root, e non vorrei questo
 
qualche consiglio ?
 
thanks
 
 


Eh, è un po' un casino anche perché poi l'utente che crea i database non
può gestire i suoi stessi grant :)
 
Puoi fare come root una db accessibile a tutti con una stored procedure che
crea i database e da i grant, e poi dare il grant di execute di quella
all'utente. Non ho provato ma dovrebbe andare ;)
 
Ciao!

infatti mi sto convincendo della non fattibilità di questa cosa

 infatti mi sto convincendo della non fattibilità di questa cosa
 
Perché? Di sicuro è fattibile, l'ho visto fare a molti servizi di hosting.
Prova con la SP, IMHO è un'idea ragionevole.
 
Ciao!


devi dare la possibilità all'utente di poter creare i database
 
le grant che devi dare sono quelle di
- CREATE : allows user to create new tables or databases
- DROP- allows user to them to delete tables or databases
- DELETE- allows user to delete rows from tables
- INSERT- allows user to insert rows into tables
- SELECT- allows user to use the Select command
- UPDATE- allow user to update table rows
 
dall'utente root in mysql
 
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
 
GRANT CREATE PRIVILEGES ON * . * TO 'newuser'@'localhost';
GRANT DROP PRIVILEGES ON * . * TO 'newuser'@'localhost';
GRANT DELETE PRIVILEGES ON * . * TO 'newuser'@'localhost';
GRANT INSERT PRIVILEGES ON * . * TO 'newuser'@'localhost';
GRANT SELECT PRIVILEGES ON * . * TO 'newuser'@'localhost';
GRANT UPDATE PRIVILEGES ON * . * TO 'newuser'@'localhost';
 
FLUSH PRIVILEGES;
 
Ciao
 
 


così l'utente vede tutti i db e li può anche cancellare.
Non mi sembra fosse quello che voleva l'OP.
 
Ciao!


devi creare un db con tutte le tabelle condivise da tutti e poi un db 
per ogni utente solo con te tabelle di quell'utente
 
-- 
(..) la rivoluzione non è un pranzo di gala, non è una festa letteraria, 
non è un disegno o un ricamo; non si può
fare con tanta eleganza, con tanta serenità e delicatezza, con tanta 
grazia e cortesia. La rivoluzione è un atto
di violenza, è l'azione implacabile di una classe che abbatte il potere 
di un'altra classe. (Mao Tze-tung)

GRANT DELETE PRIVILEGES ON * . * TO 'newuser'@'localhost';
 
Non mi pare una cosa sicura, questa qua :-)
 
Leonardo
 
-- 
 
Now suppose -just suppose- I could show you a way to
manufacture a wall that would do the same job... but
was only one inch thick.

Vorrei creare un utente che può vedere solo i suoi database ( e fin qui tutto ok ) ma poi vorrei che questo utente potesse crearsi i suoi database 
 
La creazione non la fai fare all'utente, semplice.
 
Ti fai uno script (che si collega al DB come root, quindi occhio) che crea il
database e fa un GRANT ALL PRIVILEGES ON nuovodb.* TO ... .


 
 
Sì, infatti, il concetto è quello. Io avevo proposto una stored procedure
di root per tenere tutto integrato nel DBMS, ma anche uno script fa il suo
porco lavoro :)
 
Ciao!