11

How to grant on multiple databases? MySQL.

Something like

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE
ON 'databasesprefix%'.*
TO testuser@localhost IDENTIFIED BY 'testpasswd';
shurik2533
  • 1,770
  • 4
  • 22
  • 41

2 Answers2

22

You just need to use backticks instead of quotes around the db_name prefix.

I think this will work:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE
ON `databasesprefix%`.*
TO testuser@localhost IDENTIFIED BY 'testpasswd';
Ike Walker
  • 64,401
  • 14
  • 110
  • 109
9

your example should work. from the (5.5) manual:

The “_” and “%” wildcards are allowed when specifying database names in GRANT statements that grant privileges at the global or database levels.

with % matching any number (even zero) of characters, and _ matching exactly one character. if you want a _ in your database name, you have to escape it as \_. also watch the other caveats from the manual.

<UPDATE>as the other answer points out: if the database name contains wildcards, it has to be quoted with the identifier quote character, the backtick (“`”)</UPDATE>

Emii Khaos
  • 9,983
  • 3
  • 34
  • 57
ax.
  • 58,560
  • 8
  • 81
  • 72