MySQL排序规则服务器变量是否依赖于用户?

MySQL排序规则服务器变量是否依赖于用户?,mysql,utf-8,collation,Mysql,Utf 8,Collation,在同一数据库的同一MySQL服务器上使用同一客户机(Sequel Pro)连接不同的SQL用户会导致不同的排序规则服务器变量 在my.cnf中,我包括以下内容: [mysqld] init_connect='SET collation_connection = utf8_unicode_ci, NAMES utf8' character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-hands

在同一数据库的同一MySQL服务器上使用同一客户机(Sequel Pro)连接不同的SQL用户会导致不同的排序规则服务器变量

在my.cnf中,我包括以下内容:

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci, NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
与用户A连接会导致:

collation_connection = utf8_unicode_ci
collation_database = utf8_unicode_ci
collation_server = utf8_unicode_ci
init_connect = SET collation_connection = utf8_unicode_ci, NAMES utf8
collation_database = utf8_unicode_ci
collation_server = utf8_unicode_ci
init_connect = SET collation_connection = utf8_unicode_ci, NAMES utf8
与用户B连接会导致:

collation_connection = utf8_unicode_ci
collation_database = utf8_unicode_ci
collation_server = utf8_unicode_ci
init_connect = SET collation_connection = utf8_unicode_ci, NAMES utf8
collation_database = utf8_unicode_ci
collation_server = utf8_unicode_ci
init_connect = SET collation_connection = utf8_unicode_ci, NAMES utf8
因此缺少collation_连接变量。是否可能由于某种原因忽略了init_connect/特定于用户


由于未设置排序规则连接,因此会出现排序规则非法混合的错误。

请注意,当具有
超级
权限的用户登录时,
初始化连接
不会运行。这是一项安全功能:

对于具有超级权限的用户,不会执行init_connect的内容。这样做是为了使init_connect的错误值不会阻止所有客户端连接

这是为了防止将自己完全锁定在数据库之外:

例如,该值可能包含语法错误的语句,从而导致客户端连接失败。不为具有超级权限的用户执行init_connect可使他们打开连接并修复init_connect值


因此,这些用户的预期行为是在连接时不设置此变量。

可能原因:
init\u connect
字符串似乎错误。尝试:

init\u connect='SET collation\u connection=utf8\u unicode\u ci;设置名称utf8;'

然后重新启动mysql服务


然而,这并不能解释超级许可下的奇怪行为

这是有道理的。奇怪的是,用户A拥有超级权限。用户B不是。给用户B与用户A相同的权限可以解决这个问题。你对此有什么解释吗?答案是这个答案和@Oldskool的混合。删除init\u connect字符串会产生所需的排序规则\u连接。它已经在为用户A工作的原因是超级权限没有执行init_connect。