Я могу успешно подключиться к MySQL из приглашения DOS, но когда я пытаюсь подключиться к cygwin, он просто зависает.
$/cygdrive/c/Program\ Files/MySQL/MySQL\ Server\ 5.1/bin/mysql -u root -p
Что не так?
Я могу успешно подключиться к MySQL из приглашения DOS, но когда я пытаюсь подключиться к cygwin, он просто зависает.
$/cygdrive/c/Program\ Files/MySQL/MySQL\ Server\ 5.1/bin/mysql -u root -p
Что не так?
Предполагая, что у вас есть встроенная сборка Windows MySQL, существует несовместимость терминальной эмуляции между окнами DOS
(командной строки) и bash
. Запрос mysql
не отображается.
Чтобы подтвердить это, введите команду и верните - она, вероятно, будет работать, но запрос и эхо команды (то, что вы печатаете) теряются.
Может возникнуть обходное решение в свойствах CYGWIN
sytem или в bash
, но я никогда не тратил время на это.
Я просто натолкнулся на это, и когда я прочитал, что кто-то упоминал о том, что это команда Windows/DOS, которую вы запускаете в cygwin, я сделал which mysql
и дал мне:
$ which mysql
/cygdrive/c/Program Files/MySQL/MySQL Server 5.5/bin/mysql
Итак, я запустил cygwin Setup.exe
для поиска "mysql" и установил последний "клиент mysql". Теперь which mysql
выглядит следующим образом:
$ which mysql
/usr/bin/mysql
И команда MySQL работает в cygwin:)
Хотя это старый вопрос, было бы неплохо иметь реальный ответ здесь, так как люди (например, я) все еще могут наткнуться на него.
Если ваши попытки запустить клиент MySQL из Cygwin возвращают следующую ошибку:
$ mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (2)
Затем вы можете исправить это, добавив явные параметры -h 127.0.0.1
в командную строку, например:
$ mysql -u root -p -h 127.0.0.1
Обновления, основанные на комментариях:
Чтобы избежать указания -h 127.0.0.1
в командной строке при каждом подключении, вы можете добавить:
[client]
host=127.0.0.1
в файл /etc/my.cnf
На некоторых установках Cygwin указание хоста с -h
может быть недостаточно. Если да, попробуйте также указать:
--protocol=tcp
или добавить
protocol=tcp
в файл конфигурации.
В других ответах отсутствует следующая ключевая деталь:
Cygwin имеет две оболочки:
c:\cygwin\bin\mintty.exe
c:\cygwin\Cygwin.bat
(который запускает c:\cygwin\bin\bash.exe
)Win32 MySQL может правильно писать # 2, но не # 1, потому что Win32 MySQL не может правильно исследовать stdin (спасибо @PeterNore)
Хотите узнать, используете ли вы Win32 MySQL? Используйте which
, например.
$ which mysql
/cygdrive/c/Program Files/MySQL/MySQL Server 5.1/bin/mysql
Бонус: Руководство Cygwin для преодоления проблем пути (благодаря @Dustin)
Я разместил решение/обходное решение здесь:
введите ключ, который иногда не распознается в приложениях Windows в cygwin
Запустите bash из исполняемого файла cmd.exe, а затем mysql будет работать внутри bash.
Это запустит bash в среде windows cmd.exe, и когда вы попытаетесь запустить mysql, он будет выполняться так, как вы ожидали. Это работает под Windows 7, но не тестировалось ни в какой другой версии.
Затем MySQL можно запустить без проблем.
Ответ Свенд Хансен правильный:
Установить файлы сервера mysql windows (например, из mysql-5.5.25-win32.msi)
Установите клиент Cygwin mysql с установщиком cygwin (setup.exe)
Подключитесь к своему серверу в окне cygwin с помощью клиента cygwin "mysql -u [user] -p [Password] -h [host]", в моем случае "mysql -uroot -pXXXX -h127.0.0. 1"
Я думаю, что когда вопрос был отправлен, установка cygwin не предоставляла компоненты mysql, которые теперь решаются.
Я создал полуфиксированное для этого, которое меня удовлетворяет. Я запустил cygwin.bat в cmd.exe, затем набрав mysql, все работало нормально.
Я понял, что проблема была нечестной.
Простое решение? Загрузите Консоль2, а под настройками вы можете указать это к оболочке cygwin. Перезапустите консоль2, запустите mysql и выведите появляется.
В любом случае это выгодно, потому что Console2 имеет более надежный интерфейс/настройку, чем Mintty. Мне очень нравятся параметры прозрачности и цвета.
Сделайте это:
Althoug ответ Svend Hansen имеет несколько моментов, другое - переменные PATH в среде - если путь к mysql до этого Cygwin
which mysql
покажет
/cygdrive/c/Program Files/MySQL/MySQL Server 5.5/bin/mysql
в противном случае он отобразит клиента cygwin.
Как говорится в Википедии:
Некоторые программы могут добавить свой каталог в front из PATH переменный контент во время установки, чтобы ускорить процесс поиска и/или переопределить команды ОС.
Отказ от ответственности: следующее решение этой проблемы для меня в MinTTY на MinGW/MSYS. Из исследований я считаю, что эта же первопричина также влияет на Cygwin.
Ответ отправлен здесь: fooobar.com/questions/105174/...
Вкратце, вам нужно добавить команду mysql
с помощью winpty console.exe
(или иметь псевдонимы, которые делают это). Это решение работало с родными исполняемыми файлами Windows MySQL, а не специальной сборкой cygwin/mingw. Однако вы должны скомпилировать winpty, но это было просто и безболезненно, и я работал по их документации для меня.
Примечание. Это также решило мою проблему с несколькими другими встроенными консольными приложениями Windows, а именно с Python и Mercurial с OpenSSH.
Установить клиентское приложение mysql
создать псевдоним в файле .bashrc
alias mysql = 'mysql -h 127.0.0.1'
Теперь вы можете подключиться к mysql
mysql -u user -p
Переустановите cygwin и при переустановке найдите mysql в пакетах, установите клиент mysql, а затем он будет работать нормально.