首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL不接受表名级别授予的通配符。

MySQL不接受表名级别授予的通配符。
EN

Database Administration用户
提问于 2020-10-21 09:14:24
回答 2查看 2.5K关注 0票数 1

尝试使用通配符在多个表上授予用户select特权,如下所示:

代码语言:javascript
运行
复制
GRANT SELECT ON 'DBname'.'foo_%' TO 'username'@'%' IDENTIFIED BY 'password';

但是,请继续给出以下错误:

代码语言:javascript
运行
复制
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''DBname'.'foo_%' TO 'username'@'%' IDENTIFIED BY 'password'' at line 1

服务器版本:5.7.30-日志MySQL社区服务器

我确信查询的语法是正确的,但出于某种原因,它不会接受它,有什么建议吗?

EN

回答 2

Database Administration用户

发布于 2020-10-21 15:38:31

MySQL 5.7 GRANT语法文档提供了一些关于通配符的有趣内容

根据副标题Object Quoting Guidelines,第1款规定:

虽然引用在许多情况下是可选的:帐户、数据库、表、列和例程名称,但GRANT语句中的几个对象都会被引用。例如,如果帐户名称中的user_name或host_name值作为未引用标识符是合法的,则不需要引用它。但是,要指定包含特殊字符(例如-)的user_name字符串或包含特殊字符或通配符(例如%)的host_name字符串(例如,‘test-user’@‘%..com’),必须使用引号。分别引用用户名和主机名。

第3和第4段说

当在授予数据库级别特权的GRANT语句中指定数据库名称时,允许使用_和%通配符(GRANT .在db_name上)。例如,这意味着要使用_字符作为数据库名称的一部分,在GRANT语句中指定它为__,以防止用户访问与通配符模式匹配的其他数据库(例如,GRANT .在foo\_bar__上。.)。当数据库名称不用于在数据库级别上授予权限时,而是作为将特权授予其他对象(如表或例程)的限定符(例如,授予.在db_name.tbl_name上,通配符被视为普通字符。

那么表特权呢?请注意上面的文档Table Privileges

表特权适用于给定表中的所有列。若要分配表级特权,请在db_name.tbl_name语法上使用:将mydb.mytbl上的所有权限授予“someuser”@“somehost”;授予SELECT,将mydb.mytbl插入到“someuser”@“somehost”;如果指定tbl_name而不是db_name.tbl_name,则该语句将应用于默认数据库中的tbl_name。如果没有默认数据库,则会发生错误。表级别上允许的priv_type值为ALTER、CREATE、CREATE、DELETE、DROP、GRANT选项、INDEX、INSERT、REFERENCES、SELECT、SHOW、触发器和UPDATE。表级特权适用于基表和视图.它们不适用于使用CREATE临时表创建的表,即使表名匹配。有关临时表特权的信息,请参阅第13.1.18.2节“创建临时表语句”。MySQL将表特权存储在mysql.tables_priv系统表中。

如MySQL 5.7 GRANTS文档所示

  • 通配符适用于主机名(粗体斜体)
  • 通配符适用于数据库名称(它是粗体斜体)
  • 文档没有为表名指定通配符。
  • 通配符被视为所有其他数据库对象的普通字符。

在评论中给出的解决方法是我过去在提供SELECT视图时所做的事情。

票数 0
EN

Database Administration用户

发布于 2020-10-21 15:13:00

您需要在命令中使用跳过特殊字符\

代码语言:javascript
运行
复制
GRANT SELECT ON 'DBname'.'foo\_%' TO 'username'@'%' IDENTIFIED BY 'password';
票数 -1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/278420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档