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

求助:解决mysqltuner执行JSON相关SQL语句报错(返回码256)

解决MySQLTuner执行SQL报错问题

报错原因分析

这条报错是MySQLTuner在检测空密码账号时执行SQL失败,错误码256通常关联SQL语法错误、表不存在或权限不足。

解决方案

  • 版本适配修正
    若你的MySQL版本是5.x系列,不存在mysql.global_priv表,需改用mysql.user表,替换后的SQL语句:

    SELECT CONCAT(QUOTE(user), '@', QUOTE(host)) FROM mysql.user WHERE
        user != ''
        AND plugin = 'mysql_native_password' 
        AND authentication_string = ''
        AND account_locked = 'N'
    
  • 修正JSON语法
    原SQL中的"是HTML转义字符,MySQL无法识别,需替换为原生双引号,同时优化JSON查询逻辑,正确的SQL:

    SELECT CONCAT(QUOTE(user), '@', QUOTE(host)) FROM mysql.global_priv WHERE
        user != ''
        AND JSON_CONTAINS(Priv, '"mysql_native_password"', '$.plugin') 
        AND JSON_CONTAINS(Priv, '""', '$.authentication_string')
        AND NOT JSON_CONTAINS(Priv, 'true', '$.account_locked')
    

    或更直观的JSON提取写法:

    SELECT CONCAT(QUOTE(user), '@', QUOTE(host)) FROM mysql.global_priv WHERE
        user != ''
        AND JSON_EXTRACT(Priv, '$.plugin') = '"mysql_native_password"'
        AND JSON_EXTRACT(Priv, '$.authentication_string') = '""'
        AND JSON_EXTRACT(Priv, '$.account_locked') != 'true'
    
  • 检查并授权权限
    确保执行MySQLTuner的账号拥有mysql.global_priv表的查询权限,执行以下语句授权:

    GRANT SELECT ON mysql.global_priv TO '你的用户名'@'你的主机地址';
    FLUSH PRIVILEGES;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:55:22