MySQL允许使用通配符数据库的名称,以允许用户在操作上的数据库的一个子集只:
GRANT ALL PRIVILEGES ON `foobar%`.* TO 'user'@'%' IDENTIFIED BY 'somepassword';
Run Code Online (Sandbox Code Playgroud)
有没有办法做同样的CREATE批,允许(参见上面的例子)user
来创建唯一的名字开始与数据库foobar
?
否则说:CREATE 授予是全局的(即允许具有此权限的用户创建任何数据库,而没有限制)还是可以以某种方式受到限制?
小智 9
是的。只需添加 CREATE 权限:
GRANT CREATE ON `foobar%`.* TO 'foobaruser'@'%' IDENTIFIED BY 'foobarpass';
Run Code Online (Sandbox Code Playgroud)
只需测试一下:
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'
Run Code Online (Sandbox Code Playgroud)
请注意,您需要对_
(下划线)进行转义,因为它one character
在模式中的作用类似。所以 «`foobar_`» 将匹配foobar1
or foobarZ
。
归档时间: |
|
查看次数: |
9157 次 |
最近记录: |