Mysql : Donner des privilèges sur 28 bases

Bonjour à tous,

j’ai créé 28 bases sous mysql.
J’ai créé un user, qui doit avoir tous les droits sur ces 28 bdd, et seulement sur ces bases.

Je n’ai pas trop envie de taper 28 fois la même ligne …
Je sais que c’est avec la commande “GRANT”, et je ne veux pas que l’on puisse gérer le serveur mysql avec ce user.

Comment vous feriez ? :slight_smile:

quelqu’un ?
Quelque chose ?
:slight_smile:

Tu as d’autres bases sur ton SGBD ? Est-ce qu’il y a un motif (pattern) spécifique à ces 28 bdd, ou bien peut-être sont-elles enregistrées dans un espace particulier ? Il doit bien y avoir quelque chose de spécifique, ne serait-ce que leur date de création, par exemple.
Si rien ne permet de les distinguer de tes autres bases, j’ai bien peur que tu doives le faire 28 fois :grimacing:
Je ne connais pas bien du tout mysql (j’utilise postgresql), mais il doit bien y avoir une table de description de tes bdd, dans une des bdd de l’utilisateur root de mysql. A partir de là tu dois pouvoir isoler une caractéristique spécifique commune à tes 28 bdd.

J’aurais pensé à un script shell qui récupère dans une variable $base tes 28 bases de données, pour faire une boucle for dessus avec un truc comme mysql grant all privileges on database $base to user ;

Merci pour ta réponse !

LEs 28 bases sont de la forme avec un nom cours1, cours2, cours3 … cours28.

Dans mysql le caractère « % » fait wildcard

mysql> grant all privileges on 'cours%' to 'user'@'host';

1 J'aime

merci à vous,

je teste dans la soirée :slight_smile:

ça ne marche pas…

grant all privileges on esmi% to ‘esmi’@‘localhost’;
ERROR 1046 (3D000): No database selected

grant all privileges on ‘esmi%’ to ‘esmi’@‘localhost’;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘esmi%’ to ‘esmi’@‘localhost’’ at line 1

Essaie sans les quotes, ou alors utilise des double-quotes.

Oups. En fait, c’est des « ` » qu’il faut mettre pour le nom de la base, et les privilèges sont à accorder aux tables

mysql> GRANT ALL PRIVILEGES ON `esmi%`.* TO ‘esmi’@‘localhost’;

Bonjour gillaume1, Sputnik93, kna

Ctrl-Shift-u => (curseur se transforme en un petit u souligné)
entrez alors le code hexadécimal du point de code UNICODE du caractère “GRAVE ACCENT” (U+0060)
(appelé aussi backtick ou backquote)

Sur mon clavier français, c’est aussi avec le raccourci AltGr+7 (touche 7 è `)

Ça joue des tours car ça ne se remarque presque pas à première vue…