web-dev-qa-db-fra.com

GRANT avec le nom générique de la base de données dans MySQL?

Je veux créer un utilisateur 'projectA' qui a les mêmes autorisations sur chaque base de données nommée 'projectA_%'

Je sais que c'est possible mais MySQL n'aime pas ma syntaxe:

grant all on 'projectA\_%'.* to 'projectA'@'%';

Référence: http://dev.mysql.com/doc/refman/5.1/en/grant.html

39
JR Lawhorne

Si j'utilise des back-tics au lieu de guillemets simples dans la syntaxe, cela semble fonctionner très bien:

grant all on `projectA\_%`.* to `projectA`@`%`;
74
JR Lawhorne
GRANT ALL PRIVILEGES ON `projectA\_%`.* TO 'projectA'@'%' IDENTIFIED BY 'your_passwd';

des tics sont nécessaires pour le nom de la base de données

Edited: Underscore est désormais échappé.

12
johnson

Selon la documentation DE MYSQL :

Les caractères génériques "_" et "%" sont autorisés lors de la spécification de noms de base de données dans les instructions GRANT qui accordent des privilèges au niveau global ou de la base de données. Cela signifie, par exemple, que si vous souhaitez utiliser un caractère "_" dans le nom d'un base de données, vous devez le spécifier comme "\ _" dans l'instruction GRANT, pour empêcher l'utilisateur d'accéder à des bases de données supplémentaires correspondant le motif générique; par exemple, GRANT ... ON `foo\_bar`. * TO ....

5
Travis