可以先修复 locale,但先说清楚利弊
✅ 优点:消除 setlocale 警告,避免再次发生「脚本把警告文本写入头文件」的编译报错。 ❌ 缺点:Debian12 + GCC12 原生编译 MySQL5.7 本身还有其他兼容坑,就算 locale 修好,依然有概率继续编译失败。
一句话:修复 locale 是把这个报错的导火索灭掉,但不能保证编译一定成功。 如果你想试编译,那就先修 locale;稳妥路线还是直接极速安装。
完整修复 locale 命令(Debian12)
apt update
apt install locales -y
locale-gen en_US.UTF-8
# 设置系统默认语言
echo "LANG=en_US.UTF-8" > /etc/default/locale
echo "LC_ALL=en_US.UTF-8" >> /etc/default/locale
# 生效
source /etc/default/locale
执行完成后:
- 断开 SSH 连接,重新登录服务器(必须重登,否则环境变量不刷新)
- 登录后,看终端开头,不再输出
bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8),代表修复成功 - 清理上次失败的源码残留(非常关键)
rm -rf /www/server/mysql/src
- 回到宝塔面板,再次发起 MySQL5.7【编译安装】
验证 locale 是否修复(重登 SSH 后执行)
locale
输出里面所有字段都为 en_US.UTF-8,没有报错就是成功。
两种结果预判
- ✅ 运气好:编译顺利跑完,MySQL 安装成功
- ❌ 大概率:locale 警告消失,但遇到GCC 版本过高新的 C++ 编译报错(MySQL5.7 不支持 gcc11+),依然安装失败
Debian12 默认 gcc 12,MySQL5.7 源码发布时最高只支持 gcc 7,这是底层兼容问题,locale 解决不了。
给你的选择建议
- 想折腾、测试源码编译:按上面步骤修复 locale,清理源码,尝试编译
- 要快速、稳定、业务优先:直接放弃编译,选择极速安装 MySQL5.7,几分钟装好,不会踩 gcc 兼容坑



