MySQL允许对数据库名使用通配符,以便允许用户只对数据库的子集进行操作:
GRANT ALL PRIVILEGES ON `foobar%`.* TO 'user'@'%' IDENTIFIED BY 'somepassword';
是否有同样的方法对创建授权进行允许(cf )。(上面的示例) user
只创建名称以foobar
开头的数据库?
否则会说:创建授权是全局的(即,具有此权限的用户允许创建任何数据库,不受限制),还是可以以某种方式加以限制?
发布于 2016-06-06 23:03:53
是。只需添加CREATE特权:
GRANT CREATE ON `foobar%`.* TO 'foobaruser'@'%' IDENTIFIED BY 'foobarpass';
测试一下:
foobaruser$ mysql
mysql> create database `foobar_one`;
Query OK, 1 row affected (0.00 sec)
mysql> create database `barfoo_one`;
ERROR 1044 (42000): Access denied for user 'foobaruser'@'localhost' to database 'barfoo_one'
请注意,您需要转义_
(下划线),因为它在模式中的作用类似于one character
。因此,foobar\_
将与foobar1
或foobarZ
相匹配。
https://dba.stackexchange.com/questions/137124
复制相似问题