Кто-нибудь знает, почему мой /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? Будет ли проще просто переустановить ОС fresh? На данный момент я открыт для любых предложений, которые перестанут тратить мое время.
источник
/var/run/mysqld/mysqld.sock
будет создан. Как сказал @Paul, вы должны удалить любой файл, который вы поместили в это место.Ответы:
Файл сокета на самом деле не содержит данных, он переносит их. Это особый, необычный тип файла, созданный с помощью специальных системных вызовов / команд. Это не обычный файл.
Это похоже на канал, который сервер и клиенты могут использовать для подключения и обмена запросами и данными. Кроме того, он используется только локально. Его значение заключается просто в согласованном месте встречи в файловой системе.
Создание простого старого файла и размещение его в этом месте может фактически помешать серверу, создающему его ... и тем самым помешать локальным клиентам подключиться к серверу.
Я рекомендую удалить любой файл, который вы положили в папку. Специальный файл сокета создается сервером.
источник
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect
Когда вы укажете
host=localhost
, клиент MySQL попытается войти на сервер MySQL, используя именованный канал Unix, для которого требуется.sock
файл.Это можно обойти, указав host = 127.0.0.1. Это заставит клиента mysql использовать TCP для подключения к серверу.
Взято из документации MySQL :
источник
mysql.sock
исчезновение без всякой уважительной причины в каждой версии MySQL, с которой я работал (вернуться к 4.0). Когда это происходит, я вхожу так же, но я использую--protocol=tcp
вместо--port
. Когда вы выключаете mysql, сервис ищет файл сокета. Таким образом, бег неservice mysql stop
получится. Чтобы обойти отсутствующую головную боль файла сокета, я бегуmysqladmin -h127.0.0.1 --protocol=tcp -uroot -p shutdown
. О, кстати, +1 !!!Сокет - это специальный псевдофайл, используемый для передачи данных путем чтения и записи, а не для хранения данных.
Файл сокета создается при запуске службы и удаляется при ее завершении. Расположение файла определяется
/etc/my.cnf
примерно так:источник
В моем случае при запуске
mysqld_safe
создан новыйmysqld.sock
файл.Вероятно, вы не получите ответ, но если вы перезапустите сеанс, файл mysqld.sock будет где-то. Найдите это с
источник
У меня была такая же проблема с отсутствующим mysqld.sock. Я пошел в каталог, который содержал MySQL, а именно
/usr/bin
в моем случае. Затем я выпустил командуДвойной mysql - это не опечатка, а mysql - это база данных, которая всегда будет присутствовать в новой установке MySQL. Я не знаю , если
--host
,--password
или--port
нужны , но так как он работал для меня с помощью этих параметров я в том числе их. Как только появился MySQL, я вошел в таблицу пользователей, чтобы установить пароль для пользователя root. Как только MySQL подошел, был создан отсутствующий файл сокета. Я надеюсь, что это помогает кому-то, так как я боролся в течение нескольких дней.источник
Если вы используете nginx php-fastcgi и у вас есть ошибка 502 Bad Gateway, вам нужно посмотреть конфигурацию вашего виртуального хоста в файле конфигурации nginx. Вы должны установить или исправить
fastcgi_pass
параметр.fastcgi_pass
Это переменная для установки сокетного соединения между nginx и php CGI.Другая проблема заключается в том, что двоичный стартовый скрипт может пропустить следующие записи (важные), открытые с помощью:
nano /usr/bin/php-fastcgi
Полное содержание моего начального скрипта / usr / bin / php-fastcgi:
источник