2012-12-14 17 views
5

Sto usando mysqlimport per sostituire i dati in una tabella con valori da un file TSV. Tutto funziona correttamente (importazione dei dati utilizzando il nome utente e la password del superutente DB), quindi ora voglio bloccarlo in modo che l'utente del database che esegue l'importazione possa influire solo sulla singola tabella che desidero sostituire.Privilegi minimi del database per l'utilizzo dei dati di caricamento infile

So che ho bisogno di concedere FILE su . per utilizzare "LOAD DATA INFILE" (che mysqlimport esegue il wrapping), ma sto riscontrando problemi nel trovare il set minimo di autorizzazioni che posso concedere sul database.

Ho provato;

grant FILE on *.* to ... 
grant ALL on dbname.tablename to .... 

Ma questo mi dà un errore quando eseguo mysqlimport;

mysqlimport: Error: Access denied for user ... 

qualcuno sa se è possibile isolare il database in modo che solo la tabella relativa può essere alterato da questo utente, o devo per consentire loro un accesso più ampio per rendere possibile il mysqlimport?

+0

Sapete che 'FILE' NON è in' ALL'? È un po 'un termine improprio. Poi di nuovo, se ottieni un accesso negato, fallisce su nome utente, host o password prima. – Wrikken

+0

possibile duplicato di [accesso negato per il caricamento di dati in infile in MySQL] (http://stackoverflow.com/questions/2221335/access-denied-for-load-data-infile-in-mysql) – blo0p3r

risposta

1

Per rispondere alla mia domanda, non credo che sia possibile utilizzare mysqlimport per sostituire i dati in una tabella senza utilizzare un utente del database che dispone delle autorizzazioni ad almeno goccia e creare qualsiasi tabella nel Banca dati.

mysqlimport utilizza il nome del file che si sta caricando per decidere quale tabella i dati va in, quindi ha senso che ha bisogno di essere in grado di eliminare e ricreare qualsiasi tavolo, non solo il tavolo io voglio da poter sostituire.

Peccato.