GRANT 在 MySQL 中使用数据库名称通配符?

Posted

技术标签:

【中文标题】GRANT 在 MySQL 中使用数据库名称通配符?【英文标题】:GRANT with database name wildcard in MySQL? 【发布时间】:2011-02-09 17:57:02 【问题描述】:

我想创建一个用户“projectA”,它对每个名为“projectA_%”的数据库拥有相同的权限

我知道这是可能的,但 mysql 不喜欢我的语法:

grant all on 'projectA\_%'.* to 'projectA'@'%';

参考:http://dev.mysql.com/doc/refman/5.1/en/grant.html

【问题讨论】:

【参考方案1】:

如果我在语法中使用反引号而不是单引号,它似乎工作得很好:

grant all on `projectA\_%`.* to `projectA`@`%`;

【讨论】:

back-tics 只需要数据库名称,不需要用户 当我使用 specific table name 而不是 * 例如这对我不起作用grant all on `projectA%`.`some_table%` to `some_user`@`%`; @NamGVU 指定表级权限时,数据库中的通配符被视为字符 _ 和 %。它们不再是通配符。请参阅“对象引用指南”下的 GRANT 文档【参考方案2】:
GRANT ALL PRIVILEGES ON `projectA\_%`.* TO 'projectA'@'%' IDENTIFIED BY 'your_passwd';

数据库名称需要回溯

已编辑:下划线现已转义。

【讨论】:

【参考方案3】:

根据 MySQL 的 GRANT 文档:

指定数据库名称时允许使用“_”和“%”通配符 在授予全局或数据库权限的 GRANT 语句中 水平。这意味着,例如,如果您想使用“_” 字符作为数据库名称的一部分,您应该将其指定为“\_” GRANT 语句,以防止用户能够访问 与通配符模式匹配的其他数据库;例如,授予 ... ON `foo\_bar`.* TO ....

【讨论】:

以上是关于GRANT 在 MySQL 中使用数据库名称通配符?的主要内容,如果未能解决你的问题,请参考以下文章

mysql用户管理

mysql数据库用户权限设置

MySQL创建用户的三种方法

MySQL创建用户的三种方法

MySQL创建用户的三种方法 (并授权)转

远程连接mysql