我可以授予以前缀为通配符的方式访问数据库吗?

43

我能否使用以下语句 GRANT ALL PRIVILEGES ON a*.* TO 'my_user'@'%' WITH GRANT OPTION;

我只想让用户访问以"my_prefix_"开头的所有数据库,但不能访问例如"mysql"这样的数据库。

1个回答

89

可以的。

当我创建一个名为jaap的用户,并使用选项Grant all privileges on wildcard name (username\_%)时,这就是phpMyAdmin所做的事情:

GRANT ALL PRIVILEGES ON  `jaap\_%` . * TO  'jaap'@'localhost';

这就是你的意思,对吧?

附言
正如你所看到的,_被转义了,因为在(My)SQL中,未转义的_表示“一个字符”。(就像正则表达式中的.一样。)在这种情况下,你想要_是字面值,所以数据库名称必须以jaap_开头。


5
有没有类似的通配符可以用于表名前缀? - ThorSummoner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接