41から始めました

文字通り41歳から始めたブログです。DB(MySQL)を使ってお仕事してるので、DB周りの話を中心に最近始めたこととかをTwitterのノリで書いています。なお、本サイトにおいて示されている見解は私個人の見解であり、所属団体や組織を代表するものではありません。

【MySQL】ERROR 2013 (HY000)の解消

これ、なんのエラー?

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

そもそもDBが立ち上がってないのなら全員これが出るだろうが、一部の接続だけがつながらないのであれば アクセス許可が無いパターン、もしくはmax_connect_errors システム変数の設定値を超えて接続失敗した場合が考えられる。

アクセス許可が無いパターン

qiita.com

next49.hatenadiary.jp

を参考にするとよい。

max_connect_errors システム変数の設定値を超えて接続失敗した場合

そもそもmax_connect_errors って?

連続して接続要求が中断された場合にそれを許可する回数を決定します。 要するに接続失敗回数の上限で、これを超えて接続失敗するとそのホストからの接続はロックするよ、というもの。 間で一度でも成功するとリセットされるみたい。

解消方法は?

  • max_connect_errorsを増やす
shell> mysqld_safe --max_connect_errors=10000 &

または

mysql> SET GLOBAL max_connect_errors=10000;

またはFLUSH HOSTSでキャッシュからロックされたホスト情報を吹っ飛ばす。

mysql> FLUSH HOSTS