Как устранить ошибки сокета в MySQL

Note

MySQL управляет подключениями к серверу базы данных с помощьюsocket file, файла особого типа, который облегчает обмен данными между различными процессами. Файл сокета сервера MySQL называетсяmysqld.sock, а в системах Ubuntu он обычно хранится в каталоге/var/run/mysqld/. Этот файл создается службой MySQL автоматически.

Иногда изменения в вашей системе или конфигурации MySQL могут привести к тому, что MySQL не сможет прочитать файл сокета, что не позволит вам получить доступ к вашим базам данных. Наиболее распространенная ошибка сокета выглядит следующим образом:

OutputERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Существует несколько причин, по которым эта ошибка может возникнуть, и несколько возможных способов ее устранения.

Одной из распространенных причин этой ошибки является то, что служба MySQL остановлена ​​или не запускается с самого начала, что означает, что она не смогла создать файл сокета в первую очередь. Чтобы узнать, является ли это причиной появления этой ошибки, попробуйте запустить службу с помощьюsystemctl:

sudo systemctl start mysql

Затем попробуйте снова получить доступ к MySQL. Если вы все еще получаете ошибку сокета, дважды проверьте местоположение, где ваша установка MySQL ищет файл сокета. Эту информацию можно найти в файлеmysqld.cnf:

sudo nano /etc/mysql/mysql.conf.d/mysql.cnf

Найдите параметрsocket в разделе[mysqld] этого файла. Это будет выглядеть так:

/etc/mysql/mysql.conf.d/mysqld.cnf

. . .
[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
. . .

Закройте этот файл, затем убедитесь, что файлmysqld.sock существует, запустив командуls в каталоге, где MySQL ожидает его найти:

ls -a /var/run/mysqld/

Если файл сокета существует, вы увидите его в выводе этой команды:

Output.  ..  mysqld.pid  mysqld.sock  mysqld.sock.lock

Если файл не существует, причина может заключаться в том, что MySQL пытается его создать, но не имеет соответствующих разрешений для этого. Вы можете убедиться в наличии правильных разрешений, изменив владельца каталога пользователю и группеmysql:

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

Затем убедитесь, что у пользователяmysql есть соответствующие разрешения в каталоге. Установка их на775 будет работать в большинстве случаев:

sudo chmod -R 755 /var/run/mysqld/

Наконец, перезапустите службу MySQL, чтобы он мог снова попытаться создать файл сокета:

sudo systemctl restart mysql

Затем попробуйте получить доступ к приглашению MySQL еще раз. Если вы все еще сталкиваетесь с ошибкой сокета, вероятно, существует более глубокая проблема с вашим экземпляром MySQL, и в этом случае вы должны просмотреть журнал ошибок, чтобы увидеть, может ли он дать какие-либо подсказки.

Related