サーバーがローカルクライアントと通信するために使用する UNIX ソケットファイルのデフォルトの場所は、/tmp/mysql.sock
です。 (一部の配布形式ではディレクトリが異なる場合があり、たとえば RPM の場合は /var/lib/mysql
です。)
UNIX の一部のバージョンでは、/tmp
ディレクトリ内のファイル、または一時ファイルに使用されるほかの同様のディレクトリ内のファイルをだれでも削除できます。 ソケットファイルがシステム上のそのようなディレクトリに配置されている場合は、問題となることがあります。
ほとんどのバージョンの UNIX では、/tmp
ディレクトリを保護して、所有者またはスーパーユーザー (root
) のみがファイルを削除できるようにすることができます。 これを行うには、root
としてログインして次のコマンドを使用することによって、/tmp
ディレクトリにスティッキー
ビットを設定します。
shell> chmod +t /tmp
スティッキー
ビットが設定されたかどうかを確認するには、ls -ld /tmp
を実行します。 いちばん最後の権限文字が t
である場合は、このビットが設定されています。
別の方法は、サーバーが UNIX ソケットファイルを作成する場所を変更することです。 これを行う場合は、クライアントプログラムにもファイルの新しい場所を認識させてください。 ファイルの場所を指定する方法はいくつかあります。
-
グローバルまたはローカルのオプションファイルにパスを指定します。 たとえば、次の行を
/etc/my.cnf
に指定します。[mysqld] socket=/path/to/socket [client] socket=/path/to/socket
セクション4.2.2.2「オプションファイルの使用」を参照してください。
mysqld_safe およびクライアントプログラムを実行するときに、
--socket
オプションをコマンド行に指定します。MYSQL_UNIX_PORT
環境変数に UNIX ソケットファイルのパスを設定します。別のデフォルトの UNIX ソケットファイルの場所を使用するように、ソースから MySQL を再コンパイルします。 CMake を実行するときに
MYSQL_UNIX_ADDR
オプションでファイルへのパスを定義します。 セクション2.9.7「MySQL ソース構成オプション」を参照してください。
新しいソケットの場所が動作しているかどうかをテストするには、次のコマンドを使用してサーバーに接続します。
shell> mysqladmin --socket=/path/to/socket version