「my.cnf」に値が設定されているにもかかわらず、「mysqld.pid」と「mysqld.sock」がシステムに存在しないのはなぜですか?

「my.cnf」に値が設定されているにもかかわらず、「mysqld.pid」と「mysqld.sock」がシステムに存在しないのはなぜですか?

私は取り組んでいましたこの質問に対する答え—Ubuntu 12.04.5 開発サーバーの 1 つで、次のようにパスが明示的に設定されているにもかかわらず、MySQL インストールでファイルがmysqld.pid作成されていないことに気付きました。mysqld.sockmy.cnf

[mysqld]
# 
# * Basic Settings
# 
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

なぜこのようなことが起こるのでしょうか? また、この問題を解決するにはどうすればよいでしょうか?

答え1

mysqld.pidとの場所がmysqld.sockサーバーの に設定されているにもかかわらずmy.cnf、ディレクトリが存在しないため、それらのファイルは作成されません。これを修正するには、次の操作を実行します。

まず、次のようmysqld/にディレクトリを作成します/var/run/

sudo mkdir -p /var/run/mysqld/

次に、次mysqld.pidのファイルを作成しますtouch:

sudo touch /var/run/mysqld/mysqld.pid

次に、次mysqld.sockのファイルを作成しますtouch:

sudo touch /var/run/mysqld/mysqld.sock

次に、ディレクトリとファイルの所有権をmysql:mysql次のように変更します。

sudo chown mysql:mysql -R /var/run/mysqld

最後に、これらのファイルの権限は次のようになります。

chmod 755 /var/run/mysqld
chmod 777 /var/run/mysqld/mysqld.sock
chmod 660 /var/run/mysqld/mysqld.pid

これらのファイルを設定して作成するには、次のように MySQL を再起動します。

sudo service mysql restart

すべて完了すると、MySQL は期待どおりにmysqld.pidおよびmysqld.sockファイルを作成できるようになります。

関連情報