DOSプロンプトからMySQLに正常に接続できますが、cygwinから接続しようとするとハングします。
$/cygdrive/c/Program\ Files/MySQL/MySQL\ Server\ 5.1/bin/mysql -u root -p
どうしましたか?
MySQLのネイティブWindowsビルドがあると仮定すると、DOS
(コマンドプロンプト)ウィンドウとbash
の間にターミナルエミュレーションの非互換性があります。 mysql
のプロンプトが表示されません。
これを確認するには、コマンドを入力して戻ります。おそらく機能しますが、コマンドのプロンプトとエコー(入力しているもの)が失われます。
CYGWIN
システムプロパティまたはbash
に回避策があるかもしれませんが、私はこれを解決するために時間をかけたことはありません。
私はこれに出会ったばかりで、cygwinで実行するwindows/DOSコマンドであるという誰かの言及を読んだとき、私はwhich mysql
をしました:
$ which mysql
/cygdrive/c/Program Files/MySQL/MySQL Server 5.5/bin/mysql
そこで、「mysql」を検索するcygwin Setup.exe
を実行し、最新の「mysqlクライアント」をインストールしました。 which mysql
は次のようになります。
$ which mysql
/usr/bin/mysql
そして、MySQLコマンドはcygwinで動作します:)
それは古い質問ですが、実際の答えがここにあるのはいいことです。(私のような)人々がまだそれに出くわすかもしれないからです。
CygwinからMySQLクライアントを実行しようとすると、次のエラーが返されます。
$ 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
構成ファイルに。
他の回答には、次のkey詳細がありません:
Cygwinには2つのシェルがあります。
c:\cygwin\bin\mintty.exe
c:\cygwin\Cygwin.bat
(c:\cygwin\bin\bash.exe
を起動します)Win32 MySQLは#2に正しく書き込むことができますが、not#1 Win32 MySQLはstdinを正しくプローブできません (@に感謝ピーターノア)
Win32 MySQLを使用しているかどうか知りたいですか? which
を使用します。
$ which mysql
/cygdrive/c/Program Files/MySQL/MySQL Server 5.1/bin/mysql
ボーナス: パスの問題を克服するためのCygwinガイド ( @ Dustinに感謝 )
Cmd.exe実行可能ファイルからbashを実行すると、mysqlはbash内で動作します。
これにより、Windows cmd.exe環境でbashが実行され、mysqlを実行しようとすると、期待どおりに実行されます。これはWindows 7で動作しますが、他のバージョンではテストされていません。
私はここに解決策/回避策を投稿しました:
その後、MySQLは問題なく実行できます。
Svend Hansenの答えは正しいものです。
Windows mysqlサーバーファイルをインストールします(mysql-5.5.25-win32.msiなどから)
Cygwinインストーラー(setup.exe)でCygwin mysqlクライアントをインストールします
Cygwinクライアント「mysql -u [user] -p [Password] -h [Host]」、私の場合は「mysql -uroot -pXXXX -h127.0.0.1」を使用して、cygwinウィンドウでサーバーに接続します
質問が投稿されたとき、cygwinセットアップはmysqlコンポーネントを提供していなかったと思います。これは現在解決されています。
今日この質問を見つけました2018-03-18への回答を探しています
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql.sock' (2 "No such file or directory")
ファイル/etc/my.conf
は/etc/my.cnf.d
の設定ファイルを参照します。これを/etc/my.cnf.d/client.cnf
に追加しました。
[client]
Host=127.0.0.1
protocol=tcp
その後、mysql -u root -p
を使用してcygwin端末からローカルWindows MySQLインスタンスにアクセスできました
Cygwinを再インストールし、パッケージ内のmysqlの再インストール検索中にmysqlクライアントをインストールすると、正常に動作します。
Althoug Svend Hansen answer にはいくつかのポイントがありますが、別のことは環境変数のPATHです-mysqlへのパスがcygwinのパスの前にある場合
which mysql
表示されます
/cygdrive/c/Program Files/MySQL/MySQL Server 5.5/bin/mysql
それ以外の場合は、cygwinクライアントが表示されます。
参照としてウィキペディアは言う:
一部のプログラムは、インストール中にディレクトリをPATH変数のコンテンツのfrontに追加して、検索プロセスを高速化したりOSコマンドをオーバーライドしたりできます。
Mysqlクライアントアプリをインストールする
.bashrcファイルにエイリアスを作成します
エイリアスmysql = 'mysql -h 127.0.0.1'
これでmysqlに接続できます
mysql -uユーザー-p
私はこれを満足させるための準修正を作成しました。 cmd.exeでcygwin.batを実行し、mysqlと入力すると、すべて正常に機能しました。
私はすぐに、問題が非常に小さいことに気付きました。
簡単な解決策? Console2 をダウンロードし、設定でcygwin Shellを指定できます。 Console2を再起動し、mysqlを実行すると、出力が表示されます。
Console2にはMinttyよりも堅牢なインターフェース/カスタマイズがあるため、とにかくこれは有利です。私は透明度と色のマッピングオプションが本当に好きです。
免責事項:以下はMinGW/MSYSのMinTTYの下でこの問題を解決しました。研究から、この同じ根本原因がCygwinにも影響すると考えています。
答えはここに投稿されます: https://stackoverflow.com/a/23164362/1034436
簡単に言うと、mysql
コマンドの先頭にwinptyのconsole.exe
(またはエイリアスを持っている)。このソリューションは、nativeWindows MySQL実行可能ファイルで動作し、特別なcygwin/mingwビルドでは動作しませんでした。ただし、winptyをコンパイルする必要がありますが、それは単純で痛みがなく、ドキュメントに従って作業してくれました。
注:これにより、他のいくつかのネイティブWindowsコンソールアプリケーション、つまりPythonおよびOpenSSHでのMercurial)の問題も解決しました。
これを行う: