GRANT с подстановочным знаком имени базы данных в MySQL? - PullRequest
37 голосов
/ 19 апреля 2010

Я хочу создать пользователя 'projectA', который имеет одинаковые разрешения для каждой базы данных с именем 'projectA _%'

Я знаю, что это возможно, но MySQL не нравится мой синтаксис:

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

Ссылка: http://dev.mysql.com/doc/refman/5.1/en/grant.html

Ответы [ 3 ]

69 голосов
/ 19 апреля 2010

Если я использую в синтаксисе бэк-тики вместо одинарных кавычек, похоже, все работает нормально:

grant all on `projectA\_%`.* to `projectA`@`%`;
10 голосов
/ 18 января 2013
GRANT ALL PRIVILEGES ON `projectA\_%`.* TO 'projectA'@'%' IDENTIFIED BY 'your_passwd';

для имени базы данных необходимы обратные тики

Отредактировано: знак подчеркивания теперь экранирован.

3 голосов
/ 11 июля 2014

Согласно документации MySQL GRANT :

Подстановочные знаки «_» и «%» разрешены при указании имен базы данных в операторах GRANT, которые предоставляют привилегии на глобальном уровне или базе данных уровни. Это означает, например, что если вы хотите использовать «_» символ как часть имени базы данных, вы должны указать его как «\ _» в оператор GRANT, чтобы предотвратить возможность доступа пользователя дополнительные базы данных, соответствующие шаблону подстановочных знаков; например, ГРАНТ ... ON `foo \ _bar`. * TO ....

...