【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

【大阪 / 横浜 / 徳島】インフラ / サーバーサイドエンジニア募集中!

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

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

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【CentOS 後継】AlmaLinux OS サーバー構築・移行サービス

【WordPress 専用】クラウドサーバー『ウェブスピード』

【WordPress 専用】クラウドサーバー『ウェブスピード』

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【格安】Webサイト セキュリティ自動診断「クイックスキャナー」

【予約システム開発】EDISONE カスタマイズ開発サービス

【予約システム開発】EDISONE カスタマイズ開発サービス

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

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

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【200ヶ国以上に対応】グローバル eSIM「ビヨンドSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【中国への旅行・出張・駐在なら】中国SIMサービス「チョコSIM」

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

【グローバル専用サービス】北米・中国でも、ビヨンドのMSP

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

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

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

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=クライアントと同じソケットパス[shell]

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

[shell]$ 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 エラーの原因と対処法でした。

弊社ビヨンドのご紹介

ビヨンドでは、創業以来、マルチクラウドインテグレーター・マネージドサービスプロバイダー(MSP)として培った技術力で、AWS や GCP・Azure・Oracle Cloud など、様々なクラウド / サーバーのプラットフォームを駆使した設計・構築・移行を行ってきました。

お客様が求めるシステムやアプリケーションの仕様・機能に応じて、お客様向けに最適化された、オーダーメイド型のクラウド / サーバー環境をご提供いたしますので、クラウドにご興味のある方はお気軽にお問い合わせください。

● クラウド / サーバー設計・構築
● クラウド / サーバー移行・マイグレーション
● クラウド / サーバー運用保守・監視(24時間365日)

この記事がお役に立てば【 いいね 】のご協力をお願いいたします!
4
読み込み中...
4 票, 平均: 1.00 / 14
57,517
X facebook はてなブックマーク pocket
【ウェビナー】マルチクラウド入門 ~あなたのビジネスに最適なクラウドとは?主要8クラウド最新情報をお届け!~

【ウェビナー】マルチクラウド入門 ~あなたのビジネスに最適なクラウドとは?主要8クラウド最新情報をお届け!~

【ウェビナー】運用体制から具体的な手順まで!クラウドサーバー運用保守の全貌を大公開

【ウェビナー】運用体制から具体的な手順まで!クラウドサーバー運用保守の全貌を大公開

この記事をかいた人

About the author