Подтвердить что ты не робот

Подключение к mysql из cygwin

Я могу успешно подключиться к MySQL из приглашения DOS, но когда я пытаюсь подключиться к cygwin, он просто зависает.

$/cygdrive/c/Program\ Files/MySQL/MySQL\ Server\ 5.1/bin/mysql -u root -p

Что не так?

4b9b3361

Ответ 1

Предполагая, что у вас есть встроенная сборка Windows MySQL, существует несовместимость терминальной эмуляции между окнами DOS (командной строки) и bash. Запрос mysql не отображается.

Чтобы подтвердить это, введите команду и верните - она, вероятно, будет работать, но запрос и эхо команды (то, что вы печатаете) теряются.

Может возникнуть обходное решение в свойствах CYGWIN sytem или в bash, но я никогда не тратил время на это.

Ответ 2

Я просто натолкнулся на это, и когда я прочитал, что кто-то упоминал о том, что это команда 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

в файл конфигурации.

Ответ 3

В других ответах отсутствует следующая ключевая деталь:

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)

Ответ 5

Запустите bash из исполняемого файла cmd.exe, а затем mysql будет работать внутри bash.

  • Создайте ярлык для cmd.exe на рабочем столе.
  • Откройте свойства для ярлыка и измените каталог запуска в каталог bin cygwin (обычно C:\cygwin\bin).
  • Добавьте "/c bash.exe" в конец команды в целевом параметре.

Это запустит bash в среде windows cmd.exe, и когда вы попытаетесь запустить mysql, он будет выполняться так, как вы ожидали. Это работает под Windows 7, но не тестировалось ни в какой другой версии.

Ответ 6

  • Поместите каталог cygwin bin в переменную env пути.
  • Использовать окно команд, запустив cmd
  • Запустить bash -l в окне cmd

Затем MySQL можно запустить без проблем.

Ответ 7

Ответ Свенд Хансен правильный:

  • Установить файлы сервера 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, которые теперь решаются.

Ответ 8

Я создал полуфиксированное для этого, которое меня удовлетворяет. Я запустил cygwin.bat в cmd.exe, затем набрав mysql, все работало нормально.

Я понял, что проблема была нечестной.

Простое решение? Загрузите Консоль2, а под настройками вы можете указать это к оболочке cygwin. Перезапустите консоль2, запустите mysql и выведите появляется.

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

Ответ 9

Сделайте это:

  • просто скопируйте ur mysql.exe из C:\Program Files\MySQL\MySQL Server 5.5\bin
  • вставьте этот mysql.exe в C:\cygwin\usr\local\bin
  • теперь запустите mysql, он будет

Ответ 10

Althoug ответ Svend Hansen имеет несколько моментов, другое - переменные PATH в среде - если путь к mysql до этого Cygwin

which mysql

покажет

/cygdrive/c/Program Files/MySQL/MySQL Server 5.5/bin/mysql

в противном случае он отобразит клиента cygwin.

Как говорится в Википедии:

Некоторые программы могут добавить свой каталог в front из PATH переменный контент во время установки, чтобы ускорить процесс поиска и/или переопределить команды ОС.

Ответ 11

Отказ от ответственности: следующее решение этой проблемы для меня в MinTTY на MinGW/MSYS. Из исследований я считаю, что эта же первопричина также влияет на Cygwin.

Ответ отправлен здесь: fooobar.com/questions/105174/...

Вкратце, вам нужно добавить команду mysql с помощью winpty console.exe (или иметь псевдонимы, которые делают это). Это решение работало с родными исполняемыми файлами Windows MySQL, а не специальной сборкой cygwin/mingw. Однако вы должны скомпилировать winpty, но это было просто и безболезненно, и я работал по их документации для меня.

Примечание. Это также решило мою проблему с несколькими другими встроенными консольными приложениями Windows, а именно с Python и Mercurial с OpenSSH.

Ответ 12

  • Загрузить Cygwin
  • Установить клиентское приложение mysql

  • создать псевдоним в файле .bashrc

    alias mysql = 'mysql -h 127.0.0.1'

  • выполнить исходный код .bashrc

Теперь вы можете подключиться к mysql

mysql -u user -p

Ответ 13

Переустановите cygwin и при переустановке найдите mysql в пакетах, установите клиент mysql, а затем он будет работать нормально.