Почему «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, как и ожидалось.

Связанный контент