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, и в этом случае вы должны просмотреть журнал ошибок, чтобы увидеть, может ли он дать какие-либо подсказки.