為什麼「mysqld.pid」和「mysqld.sock」會從我的系統中遺失,即使這些值是在「my.cnf」中設定的?

為什麼「mysqld.pid」和「mysqld.sock」會從我的系統中遺失,即使這些值是在「my.cnf」中設定的?

我正在研究這個問題的答案— 在我的一台 Ubuntu 12.04.5 開發伺服器上 — 並意識到 MySQL 安裝沒有建立mysqld.pid文件,mysqld.sock儘管它們的路徑明確設定my.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

相關內容