2012-12-14 12 views
5

Ich verwende mysqlimport, um Daten in einer Tabelle durch Werte aus einer TSV-Datei zu ersetzen. Alles funktioniert einwandfrei (Daten werden mit dem Namen des Datenbank-Superusers und dem Kennwort importiert). Jetzt möchte ich es sperren, damit der Datenbankbenutzer, der den Import durchführt, nur die einzelne Tabelle, die ich ersetzen möchte, betrifft.Mindest-Datenbankberechtigungen für die Verwendung von Ladedaten-Infile

Ich weiß, ich muss Datei auf gewähren., um "LOAD DATA INFILE" zu verwenden (was mysqlimport umschließt), aber ich habe Probleme, den minimalen Satz von Berechtigungen zu finden, den ich in der Datenbank gewähren kann.

Ich habe es versucht;

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

Aber das gibt mir einen Fehler, wenn ich mysqlimport ausführen;

mysqlimport: Error: Access denied for user ... 

Wer weiß, ob es möglich ist, die Datenbank zu isolieren, so dass nur die entsprechende Tabelle dieses Benutzers geändert werden kann, oder muss ich ihnen einen breiteren Zugang zu ermöglichen, müssen die mysqlimport möglich zu machen?

+0

Sie wissen, 'FILE' ist NICHT in' ALL'? Es ist ein bisschen falsch. Wenn Sie dann einen Zugriff verweigert bekommen, schlägt er davor entweder auf Benutzername, Host oder Kennwort fehl. – Wrikken

+0

mögliches Duplikat von [Zugriff verweigert für Ladedaten-Infile in MySQL] (http://stackoverflow.com/questions/2221335/access-denied-for-load-data-infile-in-mysql) – blo0p3r

Antwort

1

meine eigene Frage zu beantworten, ich glaube nicht, es möglich ist, mysqlimport zu verwenden, um Daten in einer Tabelle zu ersetzen, ohne einen Datenbankbenutzer zu verwenden, die Berechtigungen für mindestens Drop hat und erstellen jede Tabelle in der Datenbank.

mysqlimport den Namen der Datei verwendet, sind Laden Sie, welche Tabelle die Daten geht in, so macht es Sinn, zu entscheiden, dass es jede Tisch, nicht nur die Tabelle I zu fallen in der Lage sein muss, und neu erstellen möchten es ersetzen können.

Schade.