Назад | Перейти на главную страницу

Не удается подключиться к локальному серверу MySQL через сокет '/var/lib/mysql/mysql.sock' (111)

Я разработал веб-сайт на платформе Silverstripe и развернул его на сервере цифрового океана с использованием centos (7.0.1406), mariadb (10.0.14) и apache (2.4.6). Когда дело доходит до системного администратора, я новичок, поэтому настройте сервер, следуя инструкциям в документации сообщества digital ocean (https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-7).

Когда я пытаюсь подключиться к сайту, я случайно получаю следующую ошибку:

[Предупреждение] mysqli :: mysqli (): (HY000 / 2002): Не удается подключиться к локальному серверу MySQL через сокет '/var/lib/mysql/mysql.sock' (111)

На

$this->dbConn = new MySQLi($parameters['server'], $parameters['username'], $parameters['password']);

Когда это происходит, я перезагружаю сервер (с «перезагрузкой»), проблема исчезает. Это только кажется, что происходит в CMS. Мой клиент сталкивался с этим несколько раз при попытке загрузить изображения, и я впервые увидел это при переключении страниц в CMS.

Никакое использование внешнего интерфейса веб-сайта не вызывает проблем (по крайней мере, пока). Что могло вызвать эту проблему? Существуют ли какие-либо действия, которые может выполнить веб-сайт (PHP), которые могут вызвать этот сбой? Чрезмерное использование системных ресурсов / зависания где-то / таймауты? Где я могу начать процесс отладки?

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

111 означает, что в соединении отказано. То есть ничто не слушает этот сокет.

Это означает, что MariaDB не запущен или был настроен для прослушивания какого-либо другого сокета (или вообще отсутствовал).

Проверьте конфигурацию MariaDB, чтобы убедиться, что вы правильно указали сокет, затем перезапустите его.

Привет, @AveryPayne. Спасибо, что нашли время, чтобы прочитать сообщение. $ paramaters ['server'] - это 'localhost'. Ура - Фрейзер

Краткая версия - «Отсюда не добраться».

Основываясь на этом комментарии и сообщении об ошибке, я бы сказал у вас проблема с тип связи. Сокет в сообщении об ошибке указан как /var/lib/mysql/mysql.sock но вы пытаетесь подключиться к сети через localhost, который соответствует сетевому адресу 127.0.0.1. Ваша программа выглядит так, как будто она не использует правильный параметр во время выполнения. Дважды проверьте, что параметр действительно является 'localhost' на время выполнения заставив его зарегистрировать / записать параметр где-нибудь и дважды проверить, что MySQL подключен к сетевому порту 3306, а не к файловому сокету в /var/lib/mysql/mysql.sock.

Как вариант, измените параметр программы и MySQL использует вместо этого файловый сокет. Все, что работает проще всего.

У меня была та же проблема, и я узнал несколько вещей после того, как покопался. MariaDB - это прямая замена mysql. В новой системе mysql является клиентом MariaDB (хотя я не понимаю, что это значит). Проверка, запущена ли служба:

service mysqld status

в котором указано:

Перенаправление в / bin / systemctl status mysqld.service

mysqld.service

Загружено: не найдено (Причина: нет такого файла или каталога)

Активный: неактивный (мертвый)

Другими словами, служба mysqld не запущена.

Starting the service worked for me:
systemctl start mariadb.service

Теперь все команды mysql работают должным образом.

To tie the last knot, enable the service at boot:
systemctl enable mariadb.service

Первым шагом будет просмотр файла журнала Mariadb, который обычно находится в / var / lib / mysql и называется * .err.

Вы также можете убедиться, что Mariadb все еще работает на сервере, когда вы получите это сообщение об ошибке, и вы можете проверить, можете ли вы войти в систему (если он запущен).

Привет, проверьте, заполнен ли ваш диск в установочном разделе. И если хранилище существует, управляйте журналами на сервере Mariadb, добавляя следующие строки в my.conf

expire_logs_days = 10 #this is for managing the log days
max_binlog_size = 100M #this is for managing the log size

Переместите журналы в каталог и перезапустите сервер mariadb.