名称中带有分隔符的 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 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在Windows上的Python 2中运行名称中带有重音字符的cmd文件