【導入実績300社以上】AWS 構築・運用保守サービス

【導入実績300社以上】AWS 構築・運用保守サービス

【サーバー管理不要】WordPress専用クラウド『WebSpeed』

【サーバー管理不要】WordPress専用クラウド『WebSpeed』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【100URLの登録が0円】Webサイト監視サービス『Appmill』

【コミュニケーションアプリ開発】LINE アプリ開発サービス

【コミュニケーションアプリ開発】LINE アプリ開発サービス

【ECサイト構築】Shopify カスタムアプリ開発サービス

【ECサイト構築】Shopify カスタムアプリ開発サービス

【音声アプリ開発】Twilio アプリ開発サービス

【音声アプリ開発】Twilio アプリ開発サービス

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【グローバル対応】北米リージョン・クラウド / サーバー サポート

【CPU】AMD EPYC 技術検証(PoC)サービス

【CPU】AMD EPYC 技術検証(PoC)サービス

【Webシステム / サービス開発】SAKARAKU Lab(セカラクラボ)

【Webシステム / サービス開発】SAKARAKU Lab(セカラクラボ)

【取材記事】サーバー系企業ビヨンドが サーバーサイドエンジニアを募集中

【取材記事】サーバー系企業ビヨンドが サーバーサイドエンジニアを募集中

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

【対談記事】「やっぱクラウド移設っていいですよね」マイネット × ビヨンド エンジニア対談

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

【YouTube】ビヨンド公式チャンネル「びよまるチャンネル」

[2002] MySQLのソケットエラー の原因と対処法

こんにちは。Webシステム課の後藤です。

MySQLのクライアントソフト (mysql, PHP, Perl 等)からMySQLへサーバーへ接続する際、

  • Can't connect to local MySQL server through socket '/tmp/mysql.sock'
  • No such file or directory (trying to connect via unix:///tmp/mysql.sock)

のようなエラーが出て接続できないことがあると思います。

これは、「ソケット /tmp/mysql.sock を通じてローカルのMySQLサーバーに接続することができません」という意味です。
(訳しただけですね)

ソケットとは、Unixドメインソケット(ファイルシステムソケット)のことで、ローカルシステム内での通信を行う際に、
このファイルの入出力を通じてサーバー・クライアント間での通信を行います。
仲介役ですね。

では、このようなエラーが発生する原因と、対処の方法を説明したいと思います。

原因1. MySQLサーバーが起動していない

$ ps aux | grep mysqld

でプロセスがあるか確認しましょう。
ないなら、起動しましょう。

$ sudo /etc/init.d/mysqld status 

原因2. MySQLサーバーで使用しているUnixソケットと、クライアントソフトで使用しているUnixソケットのパスが違う

No such file or directory (trying to connect via unix:///tmp/mysql.sock)

例えば、上記のエラーからクライアントは /tmp/mysql.sock を参照しているのが判りますが、
MySQLサーバーでは /var/lib/mysql/mysql.sock を参照しているという場合です。

この場合の解決法は2つあります。

解決法A. クライアントをあわせる

MySQLのコンフィグファイル、/etc/my.cnf を参照すると

[mysqld]

socket=/var/lib/mysql/mysql.sock

という感じでパスが記載されているので、クライアントソフトのソケットを同じパスに設定すればよいです。

解決法B. MySQLをあわせる

/etc/my.cnf を下記の様に書き換えましょう。

[mysqld]
socket=クライアントと同じソケットパス

[client]
soket=クライアントと同じソケットパス

書き換えたら、MySQLを再起動してください。

$ sudo /etc/init.d/mysqld restart

原因3. そもそもソケットファイルがない

これも解決方法は2つあります。

解決法A.  MySQLサーバーを再起動すると復元されます。

(※mysql ではなく、サーバーの再起動です。)

$ sudo shutdown -r now

解決法B. ソケットファイルを作りましょう

/etc/my.cnf を見てパスを確認したら、

$ touch /パス/mysql.sock

$ chown mysql:mysql /パス/mysql.sock

そのパスにソケットを作成して、MySQLの再起動をしましょう。

$ sudo /etc/init.d/mysql restart

以上、MySQL 2002 エラーの原因と対処法でした。

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
0
読み込み中...
0 票, 平均: 0.00 / 10
35,661
facebook twitter はてなブックマーク

この記事をかいた人

About the author