为什么即使在“my.cnf”中设置了“mysqld.pid”和“mysqld.sock”的值,我的系统中也缺少“mysqld.pid”和“mysqld.sock”?

Gia*_*968 2 linux mysql ubuntu

我正在研究这个问题的答案——在我的一个 Ubuntu 12.04.5 开发服务器上——并意识到 MySQL 安装并没有创建mysqld.pidmysqld.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
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况以及如何解决此问题?

Gia*_*968 6

即使在我的服务器中设置了mysqld.pid和的位置,该目录也不存在,因此永远不会创建这些文件。这将解决:mysqld.sockmy.cnf

首先像这样创建mysqld/目录/var/run/

sudo mkdir -p /var/run/mysqld/
Run Code Online (Sandbox Code Playgroud)

然后创建一个mysqld.pid文件touch

sudo touch /var/run/mysqld/mysqld.pid
Run Code Online (Sandbox Code Playgroud)

接下来创建一个mysqld.sock文件touch

sudo touch /var/run/mysqld/mysqld.sock
Run Code Online (Sandbox Code Playgroud)

现在将目录和文件的所有权更改为mysql:mysql如下所示:

sudo chown mysql:mysql -R /var/run/mysqld
Run Code Online (Sandbox Code Playgroud)

并像这样重新启动 MySQL 以设置和创建这些文件:

sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)

当这一切完成后,MySQL 将能够按预期创建mysqld.pidmysqld.sock文件。