5 Stimmen

Können Wildcards bei Tabellennamen für ein GRANT in MySQL verwendet werden?

Ist es in MySQL möglich, einem Benutzer einen GRANT auf eine Reihe von Tabellen innerhalb einer Datenbank zu erteilen, z. B. um CREATE AND DROP ing für einige Tabellennamen zu erlauben, für andere aber nicht?

Beides scheint nicht zu funktionieren:

GRANT SELECT ON  `testdb`.`%_testing` TO  'wildcardtest'@'localhost';
GRANT SELECT ON  `testdb`.`testing%` TO  'wildcardtest'@'localhost';

und das MySQL-Handbuch scheint auch keine Antwort darauf zu geben.

6voto

Ian Clelland Punkte 41301

Der einzige Platzhalter, der in der GRANT-Anweisung funktioniert, ist *

GRANT SELECT ON `testdb`.* TO 'user'@'localhost';
GRANT SELECT ON *.* TO 'privilegeduser'@'localhost';

Es ist alles oder eins; es gibt keine Möglichkeit, Tabellennamen dynamisch mit gewährten Berechtigungen abzugleichen.

1voto

Justin Grant Punkte 42760

Nö. Sie können Tabellennamen mit Kommas trennen, aber keine Platzhalter in einem GRANT verwenden.

1voto

Erstellen Sie eine neue leere Datenbank. Geben Sie ihr Zugriff auf die ursprüngliche Datenbank (verwenden Sie einen Benutzer, der bereits Zugriff auf die ursprüngliche Datenbank hat). in dieser neuen Datenbank CREATE VIEW test as SELECT * from originaldatabase.tablename WHERE Bedingungen...

Geben Sie dann dem Testbenutzer Zugriff auf NewDatabase mit GRANT select auf NewDatabase.* an 'testuser'@'localhost'

Erstellen Sie dann nur Ansichten für die Tabellen, auf die testuser zugreifen soll.

Denken Sie auch daran, dass Sie ein USER() im WHERE-Teil der Ansicht verwenden können:

Beispiel: create view test as select * from original.kunde where mysql_user = USER()

In der original.customer müssen Sie dann eine Spalte 'mysql_user' haben und jede Zeile, die der Testbenutzer sehen darf, muss testuser@localhost als Eintrag haben

Der Testbenutzer sieht alle erstellten Ansichten als Tabellen in der Datenbank "test".

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X