适用场景:群晖 / 飞牛 / TrueNAS 等 NAS 设备 + 1Panel 面板 + 自建 MySQL 应用
问题现象:明明在 1Panel 的 MySQL 配置文件中加了skip_name_resolve=ON,但日志仍疯狂报 DNS 警告;max_connect_errors改了也没用,IP 动不动就被 block。
根本原因:1Panel 生成的容器使用官方 MySQL 镜像,其内部配置加载机制会“吃掉”你的部分设置。
解决方案:通过 修改容器启动命令(command) 强制注入参数——本文手把手教你操作。
一、为什么你在 1Panel 里改 my.cnf 不生效?
当你在 1Panel 中创建 MySQL 应用时,它会自动生成如下结构:
/your-app-path/
├── data/ # 数据目录
├── conf/
│ └── my.cnf # 你编辑的配置文件
├── log/ # 日志
└── docker-compose.yml你很可能已经做了这些事:
在
conf/my.cnf中添加:
[mysqld]
skip_name_resolve = ON
host_cache_size = 0
max_connect_errors = 999999在 1Panel 界面点击“重启”容器。
但问题依旧:
日志不断出现:
[Warning] IP address '172.19.0.1' has been resolved to the host name...执行
SHOW VARIABLES发现参数仍是默认值。
🔍 根本原因
1panel 在 docker 环境部署,存在配置链接挂载错误的问题;
二、正确做法:通过 command 强制指定启动参数
✅ 这是目前在 1Panel + Docker 环境下最可靠、100% 生效的方式。
步骤 1:进入应用目录
通过 SSH 登录你的 NAS,找到 1Panel 创建的 MySQL 应用目录;
步骤 2:编辑 docker-compose.yml
image: mysql:8.4.7
command: >
mysqld
--skip-name-resolve
--host-cache-size=0
--max-connect-errors=999999⚠️ 注意:
必须写
mysqld开头(某些镜像要求完整命令)。参数用中划线(
--skip-name-resolve),不是下划线。使用
>可多行书写,避免一行过长。
步骤 3:在 1Panel 中“重建”容器
⚠️ 不要只点“重启”!
进入 1Panel → 应用 → 找到你的 MySQL 应用。
点击「更多」→「重建」(或「更新」)。
这会重新读取
docker-compose.yml并启动新容器。
等待状态变为“运行中”。
🔄 “重建” ≠ “重启”!只有重建才会应用
command的修改。
五、总结
在 NAS 上通过 1Panel 使用 MySQL 时,请牢记:关键启动参数必须通过 command 显式声明。这是目前最稳定、最兼容的方案。