Erlaube SELECT nur für eine bestimmte Spalte

7

Ich habe eine UserTabelle mit 3 Spalten; name, email, password, usw.

Ich möchte einen anderen Benutzer erstellen, der nur SELECTdie nameSpalte kann.

SELECT name     FROM User;    -- Ok!
SELECT email    FROM User;    -- Not Ok!

Kann das unter MySQL gemacht werden?

Albert Hwang
quelle

Antworten:

13

Dazu müssen Sie dem Benutzer (MySQL-Benutzer) eine Auswahlberechtigung für diese bestimmte Tabellenspalte erteilen .

GRANT SELECT (name) ON MyDb.User TO 'MySQLUser'@'MySQLHost';

Erläuterungen finden Sie in der MySQL-Dokumentation zu Spaltenberechtigungen

Abdul Manaf
quelle
4

In der Regel ist es besser, eine Ansicht zu verwenden, um Spalten nach Bedarf auszublenden, und dann Berechtigungen für die Ansicht zu erteilen.

Dies entkoppelt die Tabellenstruktur und die Berechtigungen. Wenn Sie die Tabelle ändern oder neu erstellen, gehen Berechtigungen verloren. Oder fügen Sie eine neue Spalte hinzu, für die jetzt separate Berechtigungen erforderlich sind.

aka Fügen Sie einige Ansichten hinzu, um die Hierarchie der Berechtigungssätze zu vereinfachen.

gbn
quelle
Ansichten machen mehr Probleme als zu lösen: Replikation, Backups, RDS.