2012-03-20 23 views
17

Come posso limitare un account_utente nel database MySQL a una tabella specifica. Es:Come limitare un utente MySQL a una tabella specifica

UserName: RestrictedUser 
DatabaseName: db_Payroll 
TableName: 
    tb_Employees 
    tb_Users 
    tb_Payroll_YYMMDD 
    tb_Payroll_Processed 

voglio limitare "RestrictedUser" per tb_Users e solo tb_Employees e il resto dei tavoli di db_Payroll che verranno creati per un utilizzo futuro è concesso di avere accesso.

risposta

27

Supponendo che l'utente non ha i privilegi correnti, è possibile effettuare le seguenti operazioni

GRANT SELECT, INSERT, DELETE ON db_Payroll.tb_Users TO [email protected]'%' 
GRANT SELECT, INSERT, DELETE ON db_Payroll.tb_Employees TO [email protected]'%' 

A seconda esattamente quali privilegi si desidera concedere l'utente, è possibile modificare SELECT, INSERT, DELETE a qualcos'altro, per esempio ALL PRIVILEGES.

Successivamente, ricordarsi di svuotare i privilegi affinché diventino effettivi.

FLUSH PRIVILEGES; 
+3

Non è necessario "FLUSH PRIVILEGES" dopo aver usato 'GRANT' o qualsiasi altra istruzione di modifica dell'account, solo se le tabelle di sovvenzione sono state modificate direttamente con DML. Vedi http://dev.mysql.com/doc/refman/5.5/en/privilege-changes.html –

4

È possibile concedere l'accesso a singole tabelle eseguendo:

GRANT ALL ON db_Payroll.tb_Users to [email protected]; 

E allo stesso modo per le altre tabelle. Utilizzare un elenco di operazioni anziché ALL se appropriato.

Non è possibile concedere l'accesso a singole tabelle che non esistono ancora senza concedere l'accesso a tutte le tabelle.

+0

"Non puoi concedere l'accesso a singole tabelle che non esistono ancora senza concedere l'accesso a tutte le tabelle." questo è il mio problema principale, db_Payroll è usato dall'applicazione payroll, sto creando un'interfaccia web usando un php e voglio proteggere la connessione senza scrivere le impostazioni di connessione che erano usate dall'applicazione payroll. – aintgel

+5

Decidi quindi quali saranno i tuoi tavoli e concedi l'accesso a quelli appropriati. Se stai pensando a un progetto che prevede la creazione di tabelle in fase di esecuzione, STOP! Non farlo. – duskwuff

Problemi correlati