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

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

我正在这个问题的答案— 在我的其中一台 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.sockmy.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

相关内容