2008-12-01 40 views
52

Tôi có thể kết nối thành công với MySQL từ dấu nhắc DOS, nhưng khi tôi cố gắng kết nối từ Cygwin, nó chỉ bị treo.kết nối với mysql từ cygwin

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

Có vấn đề gì?

+0

Tôi vừa mới gặp phải vấn đề này. Vẫn còn đó sau 9 năm. MySQL Ver 14,14 Distrib 5.7.18, cho Win64 (x86_64). Cygwin 2.8.0 (0.309/5/3) x86_64. – bostaf

Trả lời

15

Giả sử rằng bạn có bản dựng Windows gốc của MySQL, có sự không tương thích mô phỏng thiết bị đầu cuối giữa các cửa sổ DOS (dấu nhắc lệnh) và bash. Lời nhắc cho mysql không hiển thị.

Để xác nhận điều này, hãy nhập lệnh và trả lại - có thể nó sẽ hoạt động, nhưng lời nhắc và tiếng vọng của lệnh (thứ bạn đang nhập) sẽ bị mất.

Có thể có cách giải quyết ở thuộc tính sytem CYGWIN hoặc trong bash, nhưng tôi chưa bao giờ dành thời gian để làm việc này.

+0

http://bugs.mysql.com/bug.php?id=58917 –

+1

điều này đã là một vấn đề trong mười năm: http://lists.mysql.com/win32/6625 –

+0

Điều này cũng có vẻ xảy ra khi bạn chạy telnet. – Chloe

5

tôi đăng một giải pháp/cách giải quyết ở đây:

enter key sometimes not recognized in windows apps under cygwin

+0

Tôi đã sử dụng dấu nhắc lệnh cygwin cơ bản lần này và nó hoạt động. Cảm ơn! – MCS

+0

Tôi không có bất kỳ bộ biến môi trường CYGWIN nào. Vẫn còn cùng một vấn đề - với thiết bị đầu cuối Cygwin và cũng có thể khi sử dụng SSH. –

4

Run bash từ thực thi cmd.exe và sau đó mysql sẽ làm việc bên trong bash.

  1. Tạo lối tắt cho cmd.exe trên màn hình của bạn.
  2. Mở các thuộc tính cho phím tắt và thay đổi thư mục khởi động vào thư mục bin Cygwin (thường là C: \ cygwin \ bin).
  3. Thêm "/ c bash.exe" vào cuối lệnh trong tham số đích.

Điều này sẽ chạy bash dưới môi trường cmd.exe windows và khi bạn cố chạy mysql, nó sẽ thực thi như bạn mong đợi. Điều này đang làm việc dưới các cửa sổ 7 nhưng chưa được thử nghiệm trong bất kỳ phiên bản nào khác.

+0

(-1 rút lại vì người dùng mới sử dụng SO). OP có thể bắt đầu bash dưới cửa sổ; giải pháp của bạn không thêm bất kỳ thông tin nào vào bash-shortcut thông thường được cung cấp bởi cài đặt chuẩn Cygwin. Và bạn không trả lời câu hỏi của mình: Điều gì là sai với cách gọi MySQL của mình? –

+0

Điều này hoạt động, đáng kinh ngạc! Cảm ơn! –

+0

Điều này làm việc cho tôi trên windows 8. Cảm ơn! – Hari

65

Tôi vừa bắt gặp này, và khi tôi đọc đề cập đến một ai đó của nó là một cửa sổ/lệnh DOS mà bạn chạy trong Cygwin tôi đã một which mysql và đó đã cho tôi:

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

Vì vậy, tôi chạy Cygwin Setup.exe tìm kiếm "mysql" và cài đặt "mysql client mới nhất". Bây giờ which mysql trông giống như:

$ which mysql 
/usr/bin/mysql 

Và lệnh công trình MySQL trong Cygwin :)

Mặc dù nó là một câu hỏi cũ, nó sẽ được tốt đẹp để có câu trả lời thực tế ở đây, khi mọi người (như tôi) có thể vẫn vấp ngã trên nó.

Nếu nỗ lực của bạn để chạy client MySQL từ Cygwin trả lại lỗi sau:

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

Sau đó, bạn có thể sửa chữa nó bằng cách thêm -h 127.0.0.1 lựa chọn rõ ràng để các dòng lệnh, như trong:

$ mysql -u root -p -h 127.0.0.1 

Cập nhật dựa trên nhận xét:

Để tránh chỉ định -h 127.0.0.1 trên lệnh lin e mỗi khi bạn kết nối, bạn có thể thêm:

[client] 
host=127.0.0.1 

đến tập tin /etc/my.cnf

Trên một số cài đặt của Cygwin, quy định cụ thể các máy chủ với -h có thể không đủ. Nếu vậy, hãy thử cũng quy định cụ thể:

--protocol=tcp 

hoặc thêm

protocol=tcp 

vào file config.

+1

Tôi tiếp tục cố gắng sử dụng ổ cắm, 127.0.0.1 đã thực hiện thủ thuật! Cảm ơn. – Screenack

+10

Để lưu '-h 127.0.0.1' mỗi khi bạn kết nối, bạn có thể tạo một tệp cấu hình MySQL tại'/etc/my.cnf' và đặt; '[client] \ n host = 127.0.0.1'. Các khách hàng MySQL sẽ sử dụng mạng theo mặc định sau đó. – sixones

+2

Theo như MySQL là có liên quan, 'localhost'! =' 127.0.0.1'. Trước đây chỉ ra rằng một kết nối nên được thực hiện thông qua socket UNIX, mà máy chủ Windows bản địa rõ ràng là không hỗ trợ. Sau đó buộc một kết nối mạng, do đó sự khác biệt. – Yaakov

2
  1. Đặt thư mục bin Cygwin vào biến env đường dẫn.
  2. Sử dụng cửa sổ lệnh bằng cách chạy cmd
  3. Run bash -l trong cửa sổ cmd

Sau đó, MySQL có thể chạy mà không có vấn đề.

1

câu trả lời Svend Hansen là một trong những quyền:

  • Cài đặt cửa sổ tập tin máy chủ mysql (từ mysql-5.5.25-win32.msi ví dụ)

  • Install Cygwin mysql client với trình cài đặt Cygwin (setup.exe)

  • Kết nối với máy chủ của bạn trong cửa sổ Cygwin bằng ứng dụng khách Cygwin "mysql -u [user] -p [Mật khẩu] -h [máy chủ]", trong trường hợp của tôi "mysql -uroot -pXXXX - h127.0.0.1 "

Tôi nghĩ rằng khi câu hỏi được đăng, thiết lập Cygwin không cung cấp các thành phần mysql, được giải quyết ngay bây giờ.

0

Tôi đã tạo một bản sửa lỗi bán cho điều này thỏa mãn tôi. Tôi chạy cygwin.bat trong cmd.exe, sau đó gõ mysql trong mọi thứ hoạt động tốt.

Tôi nhận ra ngay rằng vấn đề là mintty.

Giải pháp dễ dàng? Tải xuống Console2 và trong cài đặt, bạn có thể trỏ vào vỏ Cygwin. Khởi động lại Console2, chạy mysql và xuất ra xuất hiện.

Đây là cách thuận lợi, vì Console2 có giao diện/tùy chỉnh mạnh mẽ hơn Mintty.Tôi thực sự thích các tùy chọn ánh xạ màu và minh bạch.

6

câu trả lời khác thiếu các chi tiết sau đây chính:

Cygwin có hai vỏ:

  1. Mặc định: c:\cygwin\bin\mintty.exe
  2. cơ bản: c:\cygwin\Cygwin.bat (mà ra mắt c:\cygwin\bin\bash.exe)

Các Win32 MySQL có thể viết đúng cho # 2, nhưng không phải # 1, vì Win32 MySQL cannot probe stdin properly (nhờ @PeterNore)

Bạn muốn biết mình đang sử dụng Win32 MySQL chưa? Sử dụng which, ví dụ:

$ which mysql 
/cygdrive/c/Program Files/MySQL/MySQL Server 5.1/bin/mysql 

Bonus: Cygwin guide to overcoming path problems (thanks @Dustin)

0

làm điều này:

  1. chỉ cần sao chép ur mysql.exe từ C: \ Program Files \ MySQL \ MySQL Server 5.5 \ bin
  2. dán mysql.exe này vào C: \ cygwin \ usr \ local \ bin
  3. bây giờ chạy mysql, Nó sẽ
0

Althoug Svend Hansen answer có một số điểm, điều khác là PATH trong các biến Môi trường - nếu con đường với mysql là trước đó của Cygwin

which mysql 

sẽ hiển thị

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

nếu không nó sẽ hiển thị các khách hàng Cygwin.

Là tài liệu tham khảo Wikipedia nói:

Some programs may add their directory to the front of the PATH variable's content during installation, to speed up the search process and/or override OS commands.

0

Disclaimer: Sau đây giải quyết vấn đề này đối với tôi dưới mintty trên MinGW/MSYS. Từ nghiên cứu, tôi tin rằng nguyên nhân gốc rễ này cũng ảnh hưởng đến Cygwin.

Câu trả lời được đăng ở đây: https://stackoverflow.com/a/23164362/1034436

Tóm lại, bạn sẽ cần phải thêm vào trước lệnh mysql của bạn với winpty của console.exe (hoặc có bí danh mà làm như vậy). Giải pháp này đã làm việc với native các tệp thi hành Windows MySQL và không phải là một công cụ xây dựng Cygwin/mingw đặc biệt. Tuy nhiên, bạn phải biên dịch winpty, nhưng điều đó đơn giản và không đau đớn, và làm việc theo tài liệu của họ cho tôi.

Lưu ý: Điều này cũng giải quyết được vấn đề của tôi với một số ứng dụng bảng điều khiển Windows gốc khác, cụ thể là Python và Mercurial với OpenSSH.

0
  1. Tải Cygwin
  2. Cài đặt mysql ứng dụng client

  3. tạo một bí danh trong tập tin .bashrc

    alias mysql = 'mysql -h 127.0.0.1'

  4. thực hiện nguồn. bashrc

Bây giờ bạn có thể kết nối với mysql

mysql -u -p dùng

0

Cài đặt lại Cygwin và trong quá trình tìm kiếm cài đặt lại cho mysql trong các gói, cài đặt mysql khách hàng và sau đó nó sẽ hoạt động tốt.

Các vấn đề liên quan