web-dev-qa-db-ja.com

MySQLでデータベース名のワイルドカードを使用して付与しますか?

「projectA_%」という名前のすべてのデータベースに対して同じ権限を持つユーザー「projectA」を作成したい

私はその可能性を知っていますが、MySQLは私の構文が好きではありません:

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

リファレンス: http://dev.mysql.com/doc/refman/5.1/en/grant.html

38
JR Lawhorne

構文で一重引用符の代わりにバックティックを使用すると、うまく機能するように見えます:

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

データベース名にはバックティックが必要です

編集:アンダースコアはエスケープされます。

10
johnson

MySQLの [〜#〜] grant [〜#〜] ドキュメントに従って:

グローバルレベルまたはデータベースレベルで特権を付与するGRANTステートメントでデータベース名を指定する場合、「_」および「%」ワイルドカードを使用できます。これは、たとえば、データベース名の一部として「_」文字を使用する場合、GRANTステートメントで「\ _」として指定して、ユーザーが一致する追加のデータベースにアクセスできないようにする必要があることを意味しますワイルドカードパターン。たとえば、GRANT ... ON `foo\_bar`。* TO ....

4
Travis