Подключение Cygwin к MySQL: невозможно подключиться к локальному серверу MySQL через сокет '/var/run/mysql.sock'

Я только что установил MySQL 5.5.27 на WinXP. Когда я открываю командную строку (Пуск → Выполнить и введите "cmd" ), я могу получить доступ к MySQL, запустив "mysql -u root -p". Однако, когда я открываю терминал Cygwin и пытаюсь сделать то же самое, я получаю эту ошибку

$ mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (2)

В самом деле, файл "/var/run/mysql.sock" отсутствует.

Ответ 1

Если вы укажете хост в командной строке, эта проблема должна исчезнуть:

mysql -u root -p -h 127.0.0.1

Вы также можете создать my.ini, который будет использовать mysql:

echo [client] >c:\my.ini
echo user=root >>c:\my.ini
echo host=127.0.0.1 >>c:\my.ini

Затем вы можете просто ввести:

mysql -p

Вы даже можете добавить пароль:

echo password="abracadabra" >>c:\my.ini

Затем просто введите:

mysql

и вы находитесь!

См. также https://serverfault.com/questions/337818/how-to-force-mysql-to-connect-by-tcp-instead-of-a-unix-socket

Ответ 2

Попробуйте добавить это в свою команду:

-h 127.0.0.1

Проблема заключается в том, что хост клиента mysql по умолчанию - localhost, и он обрабатывает localhost специально, используя сокет unix, доступ к которому осуществляется через этот файл, но ваш сервер не может быть настроен на прослушивание в unix-сокете.

Однако, если вы обращаетесь к одному серверу через loopback IP 127.0.0.1, он будет использовать TCP-сокет вместо unix-сокета и (при условии, что сервер подключен к сети), он должен работать.

Ответ 3

Просто, чтобы сэкономить несколько keystorkes,

Добавьте следующий псевдоним в ваш файл ~/.bashrc.

alias mysql='mysql -u root -h 127.0.0.1'

После добавления этого параметра вы можете просто набрать "mysql" в своем терминале, и там вы перейдете прямо в mysql.

Ответ 4

Как и большинство упомянутых здесь людей, одним из решений будет использование псевдонимов. Не нравится, чтобы они были честными, потому что они мешают мне изучать некоторые действительно приятные команды Linux:) Это просто шутка. Но лучший способ для вас, как я думаю, - найти файл ~/.bashrc, расположенный в вашем домашнем каталоге, и поместить туда:

alias mysql="mysql -h 127.0.0.1"

Не забывайте, что вам нужно перезапустить сеанс, чтобы это решение работало, или вы можете набрать команду bash на том же сеансе терминала - он перезагрузит все ваши настройки bash. Удачи!

P.S. Я предлагаю вам закрыть все остальные окна терминала перед редактированием .bashrc, потому что вы можете просто получить файл только для чтения. У меня была такая проблема под Win7x64

Ответ 5

Я успешно установил MySQL в Cygwin на своем ПК в соответствии с Рафаэлем Хартом. Я создал базу данных и выполнил несколько запросов, и все отлично поработало. На следующий день, когда я попытался войти в MySQL, я получил ошибку:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (111 "Connection refused")

По-видимому, когда вы завершаете работу своего ПК, службы также завершаются и не перезапускаются при загрузке. Чтобы устранить проблему, я набрал следующую команду для перезапуска службы mysqld:

$ mysqld_safe &

Затем все начало работать.

Ответ 6

Здесь, как запустить MYSQL из cygwin

Перейдите сюда:
https://cygwin.rafaelhart.com/setting-up-mysql-on-cygwin/

Для запуска MYSQL выполните следующие действия:

mysql_install_db

Запустите mysql - вы получите предупреждение о брандмауэре из окон, если оно у вас активно. mysqld_safe и сразу же после этого было бы разумно запустить следующее:

mysql_secure_installation