开发者社区 问答 正文

Lost connection to MySQL server at 'reading authorization packet'

Ubuntu 18.04 mysql 5.7.2
已经按照网上的做了下面的步骤,并重启mysql 服务了,还是不行,不知道为啥。

1.大多数时候设置"set global connect_timeout=60;"是可以解决问题的。

我们可以通过执行“SHOWSTATUS LIKE 'aborted%'”,可以观察到 Variable_name Value

Aborted_clients 6
Aborted_connects 15010

觉得是否要增加connect_timeout的时间,"Aborted_connects"将会随着服务端放弃客户端初始连接而增加。如果"Aborted_connects"很大,并且不断增加,就需要增加"connect_timeout".

2.在MySQL的配置文件中[mysqld]添加"skip-name-resolve",减少域名解析的时间
3.部署服务器端的网络要好,至少大于100Mbps/s
4.如果是在调用mysql_query的时候出现的问题,那就需要把"net_read_timeout"的时间调成30秒,或者60秒,或者更大的值
5.如果还不能解决问题,那估计是你的SQL语句中含有BLOB这种大类型,我们就需要增加"max_allowed_packet"的值了

展开
收起
嗯咕狗 2019-07-02 12:04:47 6484 分享 版权
阿里云 AI 助理回答

面对您在Ubuntu 18.04上使用MySQL 5.7.2遇到的问题,您已经尝试了多种解决方案,但问题似乎仍然存在。这里有几个额外的建议和检查点,希望能帮助您解决问题:

  1. 确认配置更改已生效:确保您对my.cnf(MySQL的配置文件)所做的修改(如增加skip-name-resolve、调整connect_timeout等)已经被正确应用。有时候,即使进行了修改,如果没有正确重启MySQL服务,这些设置可能不会生效。您可以使用sudo systemctl status mysql来查看MySQL服务的状态,并确保没有错误信息。

  2. 检查防火墙和SELinux设置:确保您的服务器防火墙规则没有阻止到MySQL的连接请求。同时,如果您使用的是SELinux,请检查其策略是否允许MySQL接受外部连接。

  3. 日志分析:查看MySQL的错误日志,这通常位于/var/log/mysql/error.log,可以提供更详细的错误信息,帮助定位问题。错误日志中可能会记录导致连接失败的具体原因,比如权限问题、网络问题或资源限制等。

  4. 检查用户权限:确认您使用的MySQL用户具有从当前IP地址或网络访问数据库的权限。有时候,错误的主机名解析或者不正确的用户权限也会导致连接被拒绝。

  5. max_connections检查:如果Aborted_connects持续增加,同时并发连接数很高,可能是达到了max_connections的限制。检查并适当增加这个值(在[mysqld]下),然后重启服务。

  6. TCP/IP连接参数:除了connect_timeout,还可以考虑调整其他与网络连接相关的系统变量,如wait_timeoutinteractive_timeout,以减少因超时导致的连接中断。

  7. 资源限制:检查系统资源(CPU、内存、磁盘空间)是否充足。资源不足也可能导致MySQL服务不稳定或无法处理新的连接请求。

如果以上步骤都无法解决问题,可能需要更深入地分析网络环境、操作系统日志或MySQL的内部状态。考虑到具体情况的多样性,有时寻求专业的技术支持或在MySQL的官方社区论坛提问也是个不错的选择。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答