Кто-нибудь знает, почему мой /var/run/mysqld/mysqld.sock
Файл сокета не будет на моем компьютере, когда я установлю (или переустановлю) MySQL 5.1?
Прямо сейчас, когда я пытаюсь запустить сервер с mysqld, я получаю такие ошибки, как Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
, но создать пустой файл с таким именем (как предлагалось на форумах ubuntu) не удалось.
У меня были и mysql, и postgres, пока я не обновился до natty некоторое время назад; Я часами просматривал обе базы данных, пытаясь понять, что происходит. Я могу отказаться от postgres, но я не могу работать без рабочей копии mysql.
Самая странная часть: я использую Kubuntu, и, насколько я понимаю, KDE использует mysql для хранения разрешений пользователей и т. Д. Я не испытываю каких-либо странных проблем с разрешениями; Могу ли я считать, что (каким-то образом?) MySQL действительно работает?
Может быть, эти файлы сокетов находятся в другом месте в natty? Было бы проще просто переустановить ос свежую? На данный момент я открыт для любых предложений, которые позволят мне перестать тратить зря время.
Когда вы указываете host=localhost
, клиент mysql попытается войти на сервер mysql, используя именованный канал unix, для которого требуется .sock
файл.
Это можно обойти, указав host = 127.0.0.1. Это заставит клиента mysql использовать TCP для подключения к серверу.
Взято из Документация MySQL:
mysql --host=127.0.0.1 --port=3306 --user=your_uname --password=your_pass
Файл сокета на самом деле не содержит данных, он их транспортирует .. Это особый, необычный тип файла, созданный с помощью специальных системных вызовов / команд. Это не обычный файл.
Это похоже на канал, который сервер и клиенты могут использовать для подключения и обмена запросами и данными. Кроме того, он используется только локально. Его значение просто как согласованное место встречи в файловой системе.
Создание простого старого файла и его размещение в этом месте может фактически помешать серверу, создавшему его ... и тем самым помешать локальным клиентам подключаться к серверу.
Я рекомендую удалить любой файл, который вы поместили в это место. Специальный файл сокета создается сервером.
Сокет - это специальный псевдо-файл, используемый для передачи данных путем чтения и записи, а не для хранения данных.
Файл сокета создается при запуске службы и удаляется при завершении службы. Расположение файла определяется в /etc/my.cnf
вот так:
[mysqld]
socket=/var/run/mysql/mysql.sock
В моем случае бег mysqld_safe
создал новый mysqld.sock
файл.
$ cd /etc/init.d/
$ mysqld_safe
Вы, вероятно, не получите ответ, но если вы перезапустите сеанс, где-то будет файл mysqld.sock. Найдите это с
$ sudo find / -type s | grep mysqld.sock
У меня была такая же проблема с отсутствующим mysqld.sock. Я зашел в каталог, содержащий mysql, а именно /usr/bin
в моем случае. Затем я дал команду
mysql mysql --host=localhost --password=whatever --port=3306
Двойной mysql - это не опечатка, а скорее mysql - это база данных, которая всегда будет присутствовать в новой установке MySQL. я не знаю, если --host
, --password
или --port
необходимы, но поскольку у меня это сработало, используя эти параметры, я их включаю. Как только появился MySQL, я вошел в таблицу пользователей и установил пароль для root. Как только MySQL появился, отсутствующий файл сокета был создан. Надеюсь, это поможет кому-то, так как я боролся несколько дней.
Если вы используете nginx php-fastcgi и у вас есть 502 Неверный шлюз ошибка, чем вам нужно посмотреть конфигурацию вашего виртуального хоста в конфигурационном файле nginx. Вы должны установить или исправить fastcgi_pass
параметр. fastcgi_pass
- это переменная, устанавливающая соединение сокета между nginx и php CGI.
Другая проблема заключается в том, что двоичный стартовый скрипт мог пропустить следующие записи (важные), открытые с помощью: nano /usr/bin/php-fastcgi
SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid
Полное содержание моего стартового скрипта / usr / bin / php-fastcgi:
#!/bin/bash
FASTCGI_USER=www-data
FASTCGI_GROUP=www-data
SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid
CHILDREN=6
PHP5=/usr/bin/php5-cgi
/usr/bin/spawn-fcgi -s $SOCKET -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5
В моем случае мне пришлось переустановить mysql с помощью: apt install mysql-server-5.7
(пожалуйста, проверьте перед выполнением текущей версии sql-server), чтобы вернуться mysqld.sock
.