执行MySQL全局InnoDB参数命令遇权限等错误,求解决方案
MySQL全局InnoDB参数设置权限错误及解决办法
问题场景
在MacOS系统使用MySQL 5.6.41-84.1时,尝试通过命令行执行以下三条全局参数设置命令以调整Unicode相关配置:
SET GLOBAL innodb_file_format = barracuda; SET GLOBAL innodb_file_per_table = 1; SET GLOBAL innodb_large_prefix = 'on';
执行后出现两个错误:
ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 26540397 Current database: db_1234 ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation
错误原因
ERROR 2006是连接临时中断,通常是命令执行超时或服务器短暂断开,核心问题是后续的权限错误。ERROR 1227是关键:设置MySQL全局系统变量需要SUPER权限,当前登录的数据库账号没有这个权限,导致操作被拒绝。
解决步骤
方法1:使用拥有SUPER权限的账号执行命令
- 退出当前MySQL连接,用root(或其他拥有SUPER权限的账号)重新登录:
输入对应账号的密码后进入MySQL命令行。mysql -u root -p - 重新执行三条参数设置命令:
SET GLOBAL innodb_file_format = barracuda; SET GLOBAL innodb_file_per_table = 1; SET GLOBAL innodb_large_prefix = 'on'; - 验证设置是否生效:
输出结果中SHOW GLOBAL VARIABLES LIKE 'innodb_file_format'; SHOW GLOBAL VARIABLES LIKE 'innodb_file_per_table'; SHOW GLOBAL VARIABLES LIKE 'innodb_large_prefix';Value列应显示对应设置值。
方法2:修改配置文件永久生效(无需临时权限)
如果无法获取SUPER权限,或希望参数永久生效(重启MySQL后不丢失),可以修改MySQL配置文件:
- 找到MacOS上的MySQL配置文件:
- 官方安装包通常路径为
/usr/local/mysql/my.cnf - brew安装的MySQL路径可能为
/usr/local/etc/my.cnf - 若不存在,可在对应目录创建
my.cnf文件。
- 官方安装包通常路径为
- 在
[mysqld]段添加以下配置:[mysqld] innodb_file_format = barracuda innodb_file_per_table = 1 innodb_large_prefix = 1 - 重启MySQL服务:
- brew安装:
brew services restart mysql - 官方安装包:
sudo /usr/local/mysql/support-files/mysql.server restart
- brew安装:
- 重启后验证参数:执行上述
SHOW GLOBAL VARIABLES命令确认设置生效。
内容的提问来源于stack exchange,提问作者Jesper Martinez
相关产品推荐
相关产品推荐

