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

Ubuntu 20.04服务器MySQL 8.0.34 Telnet连接超时问题求助

MySQL 8.0.34连接超时(Got timeout reading communication packets)问题排查与解决

问题场景

通过SSH连接Ubuntu 20.04服务器后,执行telnet 127.0.0.1 3306测试本地MySQL 8.0.34端口,连接建立后立即触发超时断开,具体输出如下:

Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. [ 8.0.34-0ubuntu0.20.04.1 2%0d|yj}?tPWSG^caching_sha2_password2#08S01Got timeout reading communication packetsConnection closed by foreign host.

可能成因

  • 超时参数配置过严:wait_timeout、interactive_timeout、net_read_timeout等参数设置过小,导致握手阶段就触发服务器超时断开。
  • 认证协议不兼容:MySQL 8.0默认使用caching_sha2_password加密认证插件,telnet是纯文本协议,无法完成加密握手流程,触发服务器端超时。
  • 服务器资源耗尽:CPU、内存负载过高,MySQL进程无法及时处理连接请求,引发握手超时。
  • 本地安全规则拦截:UFW防火墙或SELinux规则可能在连接建立后拦截数据包,导致超时错误。
  • MySQL连接数耗尽:max_connections已达上限,无法接收新连接。

排查步骤

  1. 检查MySQL服务状态与资源占用

    • 用htop或top查看CPU、内存使用率,确认mysqld进程是否占用过高资源。
    • 执行systemctl status mysql确认服务是否正常运行,有无异常日志。
  2. 查看MySQL关键参数

    • 若能通过本地MySQL客户端登录,执行以下SQL查看参数:
      SHOW VARIABLES LIKE '%timeout%';
      SHOW VARIABLES LIKE 'max_connections';
      
    • 重点核对wait_timeout(默认28800秒)、net_read_timeout(默认30秒),若值远低于默认值需重点关注。
  3. 查看MySQL错误日志

    • 查看Ubuntu默认错误日志路径:tail -n 50 /var/log/mysql/error.log,寻找与连接超时、认证相关的报错信息。
  4. 验证认证插件影响

    • 尝试用官方客户端连接:mysql -u root -p,若能正常连接,说明telnet的纯文本方式无法适配caching_sha2_password是核心问题;若客户端也超时,再排查其他因素。
  5. 排查本地安全规则

    • 执行ufw status查看防火墙规则,临时关闭防火墙测试:ufw disable,再重试telnet连接。
    • 执行sestatus查看SELinux状态,若为Enforcing模式,临时切换为Permissive:setenforce 0,测试连接是否恢复。

解决建议

  1. 调整超时参数

    • 编辑MySQL配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,添加或修改以下参数:
      wait_timeout = 28800
      interactive_timeout = 28800
      net_read_timeout = 60
      net_write_timeout = 60
      
    • 重启MySQL服务:systemctl restart mysql
  2. 处理认证协议问题

    • telnet本身无法完成caching_sha2_password的加密握手,属于正常现象,建议用nc做端口连通性测试:nc -zv 127.0.0.1 3306。
    • 若需要兼容旧客户端,可修改目标用户的认证插件:
      ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
      FLUSH PRIVILEGES;
      
  3. 优化服务器资源

    • 清理闲置进程释放资源,必要时升级服务器配置;同时可调整MySQL配置(如innodb_buffer_pool_size)降低资源消耗。
  4. 修复安全规则

    • 若防火墙拦截,添加本地3306端口允许规则:ufw allow from 127.0.0.1 to any port 3306
    • 若SELinux拦截,执行setsebool -P mysql_connect_any 1开放MySQL连接权限,或根据错误日志配置针对性规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 22:09:53