在具有特定前缀的表上为用户分配权限

时间:2009-06-07 17:37:49

标签: mysql

我想为用户分配具有特定前缀的表的所有权限,例如。 'ABC _'

我知道使用通配符来选择所有表:

GRANT ALL ON dbname.* TO ...

基本上,我想做的是:

GRANT ALL ON dbname.abc_* TO ...

这不起作用所以我想知道是否有解决方案,也许使用LIKE? (我已经尝试过了,但还是无济于事。)

2 个答案:

答案 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);
?>