MySQL服务器端&客户端常见错误

摘要:
当主数据库终止查询时,会发生以下错误。2.ERROR2006(HY000):是)Ping要连接的数据库。

目录(?)[+]

  1. 客户端
  2. 服务器端
    客户端

    1.ERROR 2013 (HY000) at line 1: Lost connection to MySQL server during query

    使用select 一个大表,query的过程中被主库kill掉会出现下面错误

    2.ERROR 2006 (HY000): MySQL server has gone away

    如果超过wait_timeout或者interactive_timeout时,再使用这个连接时
    admin>show databases;

    insert values()()如果数据量的大小超过了max_allow_packets的大小,也会报
    ERROR 2006 (HY000): MySQL server has gone away

    服务器端error log中报错:
    141111 19:30:16 [Warning] Aborted connection 1280 to db: 'deal' user: 'admin' host: '10.0.0.0' (Got timeout reading communication packets)

    3.ERROR 1045 (28000): Access denied for user 'test'@'10.0.0.0' (using password: YES)

    1. ping一下要连接数据库,看能否ping通;
    2. 使用mysql client尝试连接一下,注意使用-h -u -P -p分别指定host、user、port,例如mysql -hdbxx -utest -P5002 -p,然后回车,输入密码;
    3. 强调一下,第2步的时候使用-p之后回车,然后输入密码,而不是把密码作为参数直接输入,这样一个安全,二是避免了密码中转义字符引起的问题;

    4.ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.1' (111)

    这种情况下,说明还没有连接上mysql,尝试ping下数据库,看是否能ping通;其次看下mysql server是否启动;

    5.ERROR 1040 (HY000): Too many connections

    当前服务器端的连接数超过了设置的最大连接数max_connections

    6.Host 'host_name' is blocked because of many connection errors.Unblock with 'mysqladmin flush-hosts'

    如果client在连接server的时候,出错次数超过server设置的max_connect_errors(不包括错误的密码尝试),则会报这个错误;这个一般是网络存在问题,如果确认网络存在偶尔性的,可以增大max_connect_errors并执行flush-hosts

    7.Communications link failure,The last packet successfully received from the server was *** millisecond ago.The last packet successfully sent to the server was ***  millisecond ago。

     1) mysql服务器默认的“wait_timeout”是8小时(也就是默认的值默认是28800秒),也就是说一个connection空闲超过8个小时,mysql将自动断开该connection,通俗的讲就是一个连接在8小时内没有活动,就会自动断开该连接。而连接池却认为该连接还是有效的(因为并未校验连接的有效性),当应用申请使用该连接时,就会导致上面的报错。

    2) 如果客户端连接设置了socketTimeout=1000(即1s), 当客户端连接发送一个慢查询(超过1s)时,客户端连接socket会断开,同样会报“Communications link failure” 错误

    MySQL服务器端&客户端常见错误第1张

    8.Could not create connection to database server. Attempted reconnect 3 times. Giving up

     1)如上错误常见情况是后端mysql服务不可用,请确认后端mysql服务正常以及连接使用的配置参数正确;

     2)还有一种情况是业务使用了Atlas,业务连接串中配置了重连(autoReconnect=true),当连接池中连接损坏(如上7中描述了可能损坏的情况),业务再次使用该损坏连接的时候会发起重连(JDBC内部机制)并尝试三次,但是报如上错误(确认连接参数无问题)。这是由于jdbc内部重连上后会发送“SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ” 请求,而该请求在0.0.2版本的Atlas中不支持(可升级0.1解决),只会影响当前请求,不影响这个连接下一次的使用。

    MySQL服务器端&客户端常见错误第2张

    MySQL服务器端&客户端常见错误第3张

    服务器端

     

    1. [Warning] Aborted connection 104566 to db: 'test' user: 'root' host: 'localhost' (Got an error reading communication packets)

        很明显, MySQL认为读到了一个错误的包,并将该连接Aborted了, 在errlog中记下这个warning, 通过show global status like '%Aborted_clients%' 可以看到Aborted_clients 值的增加。

        出现该warning主要是因为客户端没有正常调用mysql_close()退出。我们针对php、python、perl做测试如下:

        1) python 代码如下:

        MySQL服务器端&客户端常见错误第4张

        运行该程序, 在另一个Term中kill  或者 kill -9 该进程, 在MySQL errlog中均会出现如上warning

        运行该程序, 然后按下 crtl + c 中断该程序, 在MySQL errlog中没有出现如上waring

        2)php 代码如下:

        MySQL服务器端&客户端常见错误第5张

        运行该程序,在另一个Term中kill  或者 kill -9 该进程, 在MySQL errlog中均会出现如上warning

        运行该程序, 然后按下 crtl + c 中断该程序, 在MySQL errlog中出现如上waring

        3)perl 代码如下:

        MySQL服务器端&客户端常见错误第6张

        运行该程序,在另一个Term中kill  或者 kill -9 该进程, 在MySQL errlog中均会出现如上warning

        运行该程序, 然后按下 crtl + c 中断该程序, 在MySQL errlog中出现如上waring

        注: 通过测试,发现python、php、perl 对 crtl + c (同 kill -2) 处理方式不同,仅python 对 kill -2 信号处理调用了 mysql_close() 正常关闭MySQL连接。 


    2.[Warning] Access denied for user 'test'@'localhost' (using password: YES)

       服务器端报此错误,主要是客户端连接的时候使用了错误的密码。

       创建测试用test, 并赋予test库的增删改查权限:

       MySQL服务器端&客户端常见错误第7张

       1) 在终端使用错误的密码连接MySQL结果如下:

       MySQL服务器端&客户端常见错误第8张

       可以看到此时客户端报用户无权限连接 ERROR, 而此时服务器端errlog中会出现如上的warning

       2) 在终端连接没有权限的database 结果如下:

       MySQL服务器端&客户端常见错误第9张 

       此时客户端报没有权限连接MySQL库, 而服务器端errlog中没有任何warning出现

     

    3.[Warning] Aborted connection 104643 to db: 'test' user: 'root' host: 'localhost' (Got timeout reading communication packets)

       主要是客户端连接在wait_timeout 时间范围内都无操作,服务器端会断开此连接

       1)首先我们设置wait_timeout值为10秒

        MySQL服务器端&客户端常见错误第10张

        2)  等待超过10s后服务器端报错如下:

        MySQL服务器端&客户端常见错误第11张

        3)  再在MySQL客户端中发起操作会报ERROR : MySQL server has gone  away 

        MySQL服务器端&客户端常见错误第12张

        

    4.[Warning] Aborted connection 104660 to db: 'test' user: 'root' host: 'localhost' (Got a packet bigger than 'max_allowed_packet' bytes)

        此warning主要是因为客户端向服务器端传送了大于max_allowed_packet 指定大小的包所导致。测试如下:

      1) 首先将数据通过mysqldump命名将数据导出

         MySQL服务器端&客户端常见错误第13张

         默认mysqldump会将数据导出成多个insert into语句, 每个语句大小接近1M

      2)设置max_allowed_packet = 524288

         MySQL服务器端&客户端常见错误第14张

      3) 再使用MySQL命令将hostname.sql 导入结果如下:

        MySQL服务器端&客户端常见错误第15张

         服务器errlog中会报如上warning


    转自meituan wk


    免责声明:文章转载自《MySQL服务器端&客户端常见错误》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

    上篇后渗透工具Empire使用教程Jenkins内存溢出的处理方法下篇

    宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

    相关文章

    vue:axios拦截器

    拦截器分两类:请求拦截器和响应拦截器 一、请求拦截器 在请求发出之前设置一些信息。比如说设置请求头, 在use方法参数即第一个函数的形参中通过config来做信息的配置,配置完之后,必须把config返回,这样才能完成拦截器的功能。第二个函数用于处理错误的信息。 用拦截器的方式配置请求头会更加灵活。拦截器中可以通过config获取更多的信息,比如url地...

    flutter_blue 蓝牙插件实战及那些坑

    项目场景: 地下车库无网路的情况下需要使用蓝牙对小区门禁进行开门 本人掘金文章 坑一: 安卓端引入flutter_blue运行项目报错 1. 原因: 安卓sdk版本需要28以上 2. 解决: android/build.gradle 下修改 compileSdkVersion  targetSdkVersion 为 28;  minSdkVersion 修...

    [django]l利用xlrd实现xls文件导入数据

    代码: #coding:utf-8 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "www.settings") ''' Django 版本大于等于1.7的时候,需要加上下面两句 import django django.setup() 否则会抛出错误 dja...

    使用webpack搭建vue开发环境

    最近几天项目上使用了vue.js作为一个主要的开发框架,并且为了发布的方便搭配了webpack一起使用。CSS框架使用的是vue-strap(vue 对bootstrap控件做了封装)这篇文章主要总结一下具体搭建的过程,和途中遇到的一些问题的解决办法 主要用到的工具 Vue webpack vue-strap vue-router 搭建步骤 1. 首先...

    基于JWT的Token登录认证

    1.JWT简介         JSON Web Token(缩写 JWT),是目前最流行的跨域认证解决方案。 2.JWT的原理        JWT的原理是,服务器认证以后,生成一个JSON格式的对象,发回给客户端,就像下面这样. { "用户名": "admin", "角色": "超级管理员", "到期时间": "2019-07-13...

    内存映射mmap

    Table of Contents 1. 什么是mmap 2. 使用方法 2.1. mmap构造器的格式 2.2. 例子1 2.3. 例子2 3. 其它 4. 参考资料 什么是mmap通常在Unix系统里有两种操作的数据类型:内存地址和流文件(stream)。通过操作内存地址的方法涉及的操作有:pointers, malloc/free之类,...