You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 8.0.34中GRANT语句用户名大小写敏感问题咨询

MySQL 8.0.34 Windows下用户命名字母大小写问题原因解析
  • 核心原因是MySQL用户名的大小写敏感性独立于业务库的字符集/排序规则,也不受控制库表名大小写的lower_case_table_names参数影响,而是由系统库mysql中用户表的字段排序规则决定。
  • MySQL 8.0默认情况下,mysql.user表的User字段使用区分大小写的排序规则(如utf8mb4_0900_as_cs)。这意味着你创建的小写user1和大写USER1会被识别为两个完全不同的用户,所以执行SHOW GRANTS FOR USER1;时会提示找不到该用户,授权语句自然也无法生效。
  • 你之前觉得Windows下MySQL不区分大小写,是因为lower_case_table_names参数默认值为1,这个参数会让MySQL自动将库名、表名转为小写,从而表现出不区分大小写的特性,但这个规则仅作用于库表名,不适用于用户名。

可以通过以下语句验证mysql.user表的字段排序规则:

SHOW CREATE TABLE mysql.user;

查看结果中User字段的定义,会看到类似User varchar(32) COLLATE utf8mb4_0900_as_cs NOT NULL DEFAULT ''的内容,其中as_cs代表区分大小写的排序规则。

解决建议

  • 操作用户名时严格保持大小写一致,创建时用小写,后续查询、授权等操作也统一使用小写;
  • 不建议修改mysql.user表的字段排序规则来强制用户名不区分大小写,这会破坏MySQL默认的权限管理逻辑,可能引发其他问题。

内容的提问来源于stack exchange,提问作者techfan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 19:11:11