名称中带有分隔符的 db 上的 GRANT 不起作用

Posted

技术标签:

【中文标题】名称中带有分隔符的 db 上的 GRANT 不起作用【英文标题】:GRANT on db with a separator in name not working 【发布时间】:2022-01-13 20:48:58 【问题描述】:

我在装有 MariaDB 的 Debian 服务器上遇到问题。 我正在尝试向我的名为 extranet-agricoop 的数据库上的用户('agricoop')授予所有权限。

我在写:GRANT ALL PRIVILEGES ON extranet-agricoop.* TO 'agricoop'@'localhost'; 我收到错误消息:“您的 SQL 语法 [...] 在第 1 行的 'extranet-agricoop.* TO 'agricoop'@'localhost'' 附近有错误”

它适用于我在其他桌子上的其他用户,但不适用于那个。如果我选择“*.*”,它可以工作,所以对我来说问题似乎来自数据库的名称。我试图逃脱分隔符,但仍然无法正常工作。

你有什么想法吗? 谢谢:)

【问题讨论】:

【参考方案1】:

如果标识符包含一个或多个不属于 [a-z,A-Z,0-9,$,_] 的字符(或者不是 unicode 字符 > 0x0080),则必须引用标识符。

如果设置了sql_mode ANSI_QUOTES,则必须使用双引号("),如果sql_mode 为MSSQL,则必须使用方括号([..])。

例子:

GRANT ALL ON `better-use-dash-than-minus`.* TO foo@localhost

【讨论】:

以上是关于名称中带有分隔符的 db 上的 GRANT 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Snowflake - 创建名称中带有日期变量的表

在Windows上的Python 2中运行名称中带有重音字符的cmd文件

pymongo中带有forEach函数的Mongo聚合查询不起作用

名称中带有空格的 SQLite 列

名称属性中带有方括号的输入的 jQuery 选择器

反应本机:名称中带有空格的图像不会在 IOS 中加载(设备,不是 https 问题)