sql >> Database teknologi >  >> RDS >> Mysql

Giv privilegier på flere borde med et specifikt præfiks

Forhåndsbemærkning:Dette er ikke mit svar. Jeg fandt den på http://lists.mysql.com/mysql/202610 og har kopieret og indsat for nemheds skyld kredit til Stephen Cook

Du kan bruge visningen INFORMATION_SCHEMA.TABLES til at generere GRANT-erklæringerne for dig. Skriv en forespørgsel på følgende måde:

SELECT   CONCAT('GRANT SELECT ON test.', TABLE_NAME, ' to ''foouser'';')
FROM     INFORMATION_SCHEMA.TABLES
WHERE    TABLE_SCHEMA = 'test'
      AND TABLE_NAME LIKE 'foo_%'

Kør det derefter, kopier resultaterne, og kør disse resultater som en forespørgsel orscript. Du kan selvfølgelig blive så skør som du vil med dette, for eksempel hvis du gør dette for mange brugere, kan du skrive en lagret procedure, der tager en parameter for brugernavnet og derfor kan bruges som et værktøj, når du har brug for det.

Det er ikke en syntaks, du bad om, men det er et godt trick, der virker.

--

Erstat tabelskemaet 'test' med navnet på din database. foo_% kan erstattes med det passende præfiks_%

Jeg prøvede dette på egen hånd, og det fungerede godt.



  1. Søgning og filtrering / forfining af databaseresultater i Laravel 4

  2. Problemet med tabt opdatering i samtidige transaktioner

  3. Oracle Søg efter streng i alle tabeller, alle kolonner

  4. Når jeg kalder PreparedStatement.cancel() i et JDBC-program, dræber det det så i en Oracle-database?