我想为用户分配具有特定前缀的表的所有权限,例如。 'ABC _'
我知道使用通配符来选择所有表:
GRANT ALL ON dbname.* TO ...
基本上,我想做的是:
GRANT ALL ON dbname.abc_* TO ...
这不起作用所以我想知道是否有解决方案,也许使用LIKE? (我已经尝试过了,但还是无济于事。)
答案 0 :(得分:3)
不,抱歉。必须一次执行一个(当然,可以选择以编程方式执行)。
答案 1 :(得分:1)
$ php -f pcre_grant.php -- localhost root password database user1 abc_ ALL
pcre_grant.php will look like:
<?php
list($script, $db_host, $db_username, $db_password, $db_name, $regexp, $username, $perms) = $argv;
$link = mysql_connect($db_host, $db_username, $db_password);
mysql_select_db($db_name);
$result = mysql_query("SHOW TABLES");
while($row = mysql_fetch_row($result)){
if(preg_match('/'.$regexp.'/',$row[0]))
mysql_query("GRANT ".$perms." ON `".$db_name."`.`".$row[0]."` TO ".$username);
}
mysql_close($link);
?>