ソケットの自作を介してローカルのMySQLサーバーに接続できない


109

最近、MySQLをhomebrew(brew install mysql)でインストールしようとしましたが、実行しようとすると、次のエラーが発生します。

エラー2002(HY000):ソケット '/tmp/mysql.sock'を介してローカルMySQLサーバーに接続できません(2)

もありませ/tmp/mysql.sock/var/lib/mysql.sock

検索しましたが、mysql.sockファイルが見つかりません。

どうすれば修正できますか?


あなたはこのリンクGeekHadesの答えを見ることができます。stackoverflow.com/questions/4847069/…–
GeekHades

mysqlをインストールして醸造しましたが、ラップトップのバッテリーが切れて強制的にシャットダウンされた後も同じ問題が発生しました。mysqld物事をチェックし、MySQLが前回正しくシャットダウンしたことを確認するために実行する価値があります。「ダーティー」シャットダウンが発生した場合(たとえば、ラップトップのバッテリーが強制的にシステムをシャットダウンした場合)、これでクリーンアップされます。その後、MySQLサーバーを再起動できますmysql.server start
Dave Everitt 2017年

1
この答えは私にとって
うまくいき

これは、Time Machineバックアップから新しいMac Miniを復元した後に発生しました。私はmysql@5.7をアンインストールし、それを機能させるために再インストールする必要がありました。ハンマーをかみましたが、すべての構成が保持されていたため、比較的痛みはありませんでした。
Joshua Pinter

回答:


93

あなたが経由してサーバーを稼働させたとき

mysql.server start

/tmp/mysql.sockにソケットが表示されます。ただし、システムは/var/mysql/mysql.sockでそれを予期しているようです。これを修正するには、/ var / mysqlにシンボリックリンクを作成する必要があります。

sudo mkdir /var/mysql

sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

これで解決しました。これで、phpMyAdminはlocalhost および 127.0.0.1で問題なく動作します。

クレジットはヘンリーに行く


1
これにより、WordPressがmySQLに接続できないという問題も解決されました。ありがとうございました
Ayoub 2015

20
私がしようとしたときmysql.server start、私が得ますERROR! The server quit without updating PID file (/usr/local/var/mysql/lyahdav-C02R32HCG8WM.pid)。を介してインストールされた古いバージョンのMySQLが必要でしたbrew install mysql@5.6
Liron Yahdav

3
ランニング。mysql.server start私のためにそれを修正しました
ivange94

@Liron、あなたが直面している問題を修正しましたか?私は助けなしで同じ問題に直面しています。
バディ、

@EBこの問題が発生して久しぶりですが、私のコメントを振り返って、古いバージョンのMySQLをインストールするための回避策を試しましたか?それ以外は残念ながらアイデアがありません。
Liron Yahdav 2017年

61

mysqlサーバーが起動していないようです。私は通常、stopコマンドを実行してから、もう一度開始します。

mysqld stop
mysql.server start

同じエラーで、これは私にとってはうまくいきます。


89
。エラー!サーバーはPIDファイル(/usr/local/var/mysql/myHostName.pid)を更新せずに終了しました。?
Pesulap、2015

mysqld &上記のコメントごとに行いましたがmysqld stop 、私の場合は不適切なシャットダウンが原因であると確信しているので、おそらく同じことをすると思います。
ミッチヴァンダイン

53

別のmysql(8.0)インストールからいくつかのディレクトリが残っていて、削除されていませんでした。

私はこれを次のようにして解決しました:

最初にmysqlをアンインストールします

brew uninstall mysql@5.6

削除されなかったフォルダ/ファイルを削除します

rm -rf /usr/local/var/mysql
rm /usr/local/etc/my.cnf

mysqlを再インストールしてリンクする

brew install mysql@5.6
brew link --force mysql@5.6

サービスを有効にして開始します

brew services start mysql@5.6

3
ありがとうございました:)すべての指示は失敗しましたが、あなたの指示は失敗しました
Vyacheslav Loginov '12

1
ありがとう-この答えは壁に対する24時間の頭の打撃を終了しました
vladiim

1
これは、他のすべてを試してみた後も私にとってはうまくいきました!ありがとうございました!!!!:)
エリック

1
以前のインストール後、まだ/ usr / local / var / mysqlが残っていたことが問題だったようです。削除はトリックをしました!あなたの提案をありがとう。
themantimes8

このエラーが消える前に、homebrewによって言及された「mysql_secure_installation」ステップを実行する必要がありました。
シーライグ

27

「localhost」の代わりに「127.0.0.1」を使用して接続してみてください。


2
@Esteban MySQLは、「localhost」に接続するように指示すると、UNIXソケットに接続しようとします。127.0.0.1に接続するように指示すると、ネットワークソケットに接続するように強制されます。したがって、おそらくMySQLはネットワークソケットのみをリッスンし、ファイルシステムソケットはリッスンしないように設定されています。(出典:serverfault.com/a/295300/59101
Ardeeアラム

これにより、MySQLクライアントが強制的にTCPソケットを使用するようになりました。これは、リモートMySQLデータベースへのlocalhostでSSHトンネルを実行しているためです。
Iow

22

1)以下のコマンドを実行したときに「mysqlが停止した」ことがわかる場合。

brew services list

2)以下のコマンドでmysqlを起動できる場合;

mysql server start

これの意味は; mysqlは手動で起動できますが、オペレーティングシステムの起動時に自動的には起動しません。mysqlをサービスに追加すると、この問題が修正されます。そのためには、以下のコマンドを実行します。

brew services start mysql

その後、オペレーティングシステムを再起動し、mysqlに接続して、自動的に起動したかどうかを確認します。私は同じことをし、以下のエラーの受信を停止しました。

エラー2002(HY000):ソケット '/tmp/mysql.sock'を介してローカルMySQLサーバーに接続できません(2)

これがお役に立てば幸いです。


@berk私の場合、エラーを解決するのに役立ちましたが、別のエラー 'ERROR 1045(28000):Access denied for user' user '@' localhost '(using password:NO)'
Pratik Khadka

こんにちは@PratikKhadka、あなたが今得ているエラーは、mysqlが実行中であり、認証に問題があることを意味します。投稿したエラーメッセージによると、ユーザー名を「user」として使用し、パスワードを使用していません。有効なユーザー名とパスワードを使用する必要があります。次のリンクを確認することをお勧めします。" forums.mysql.com/read.php?34,140320,140324 "
Berk

OSを再起動する必要はありません。「brew services start mysql」を実行するだけでうまくいきました。ありがとう!
AKS

こんにちは@AKS、あなたは正しいです。機能させるために再起動する必要はありません。回答を編集して、再起動が必要な理由を説明しました。OSの起動時にmysqlが自動的に起動するかどうかを確認する必要があります。フィードバックありがとうございます!
バーク

5

ファイル /tmp/mysql.sockは一時フォルダーにあるため、おそらく名前付きパイプです。名前付きパイプは、永続的に保存されることのない特殊ファイルです。

2つのプログラムを作成し、1つのプログラムから別のプログラムにメッセージを送信する場合は、テキストファイルを作成できます。1つのプログラムでテキストファイルに何かを書き込み、もう1つのプログラムで他のプログラムが書き込んだ内容を読み取ります。それはパイプと同じですが、コンピューターのハードディスクにファイルを書き込まないことを除いて、IEはファイルを永続的に保存しません(ファイルを作成して保存するときのように)。

ソケットはパイプとまったく同じです。違いは、ソケットは通常、ネットワークを介して、つまりコンピュータ間で使用されることです。ソケットは別のコンピュータに情報を送信するか、別のコンピュータから情報を受信します。パイプとソケットはどちらも一時ファイルを使用して共有するため、「通信」できます。

この場合、どのMySqlが使用しているかを見分けるのは困難です。でも関係ありません。

コマンドmysql.server startは、その特殊ファイルを作成し、変更を待つ(listen書き込み用)無限ループを実行する「サーバー」(プログラム)を取得する必要があります。

その後、一般的な問題として、MySqlプログラムにマシン上にファイルを作成する権限がないため、ルート権限を付与する必要がある場合があります

sudo mysql.server start

これは非常にうまくいきました、ありがとう。私は、、を実行したmysql.server startmysql.server stop、再び自作を介してサービスを開始しましたbrew services start mysql@5.7
テイラーサーロウ

4

macos mojaveをインストールした後、mysqlフォルダーをワイプしてから/usr/local/var/mysql再インストールbrew install mysqlする必要がありました。


私はあなたの答えで私の問題を解決しました、以前にmysqlをインストールしてから、mysql @ 5.6にダウングレードしようとしました
Rodrirokr

ありがとう、相棒。それも私の問題を解決しました。/ usr / local / var / mysqlを削除して再インストールすることが解決策でした。
OGUZ缶Sertel

1
注意:削除/usr/local/var/mysqlすると、既存のデータベースもすべて削除されます!
レオナルド

3

私は同じエラーを受け取りました、そしてこれは私を助けたものです:

$ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
$launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
$mysql -uroot
mysql>

3

これらの答えに追加するために、私の場合、ローカルのmySQLサーバーがなく、Dockerコンテナー内で実行されていました。そのため、ソケットファイルは存在せず、「mysql」クライアントからアクセスできません。

sockファイルはmysqldによって作成され、mysqlはこれを使用して通信します。ただし、mySqlサーバーがローカルで実行されていない場合、sockファイルは必要ありません。

ホスト名/ ipを指定することにより、sockファイルは不要になります。

mysql --host=127.0.0.1 --port=3306 --user=xyz --password=xyz

3

私はこれを解決するためにかなりの時間を費やし、このエラーを探すときに常にこのページに戻ってきたので、誰かが私が失った時間を節約できることを期待して、ここに私の解決策を残します。私の場合、MySqlではなくmariadbを使用していますが、このソリューションをニーズに適合させることができる場合もあります。

私の問題

は同じですが、私の設定は少し異なります(mysqlではなくmaradb):

自作でmariadbをインストール

$ brew install mariadb

デーモンを起動しました

$ brew services start mariadb

接続しようとし、上記のエラーが発生しました

$ mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

私の解決策

(このコメントで提案されているように)どのmy.cnfファイルが使用されているかを調べます:mysql

$ mysql --verbose --help | grep my.cnf
/usr/local/etc/my.cnf ~/.my.cnf
                        order of preference, my.cnf, $MYSQL_TCP_PORT,

Unixソケットファイルが実行されている場所を確認します(ほとんどここで説明されています)。

$ netstat -ln | grep mariadb
.... /usr/local/mariadb/data/mariadb.sock

(あなたgrep mysqlはmariadbの代わりにしたいかもしれません)

見つけたソケットファイルを追加します~/.my.cnf(必要に応じてファイルを作成します)(上記~/.my.cnfmysql --verbose ...-commandを実行したときにリストされたと仮定):

[client]
socket = /usr/local/mariadb/data/mariadb.sock

mariadbを再起動します。

$ brew services restart mariadb

この後、mysqlを実行して、以下を取得できます。

$ mysql -uroot
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

そのため、代わりにスーパーユーザー権限でコマンドを実行し、パスワードを入力した後、以下を取得しました。

$ sudo mysql -uroot
MariaDB [(none)]>

ノート:

  1. ソケットを追加する必要があるグループについてはよくわかりません。最初に[client-server]を用意しましたが、[client]で十分だと考えました。だから私はそれを変更し、それはまだ動作します。

  2. 実行するmariadb_config | grep socketと私は--socket [/tmp/mysql.sock] それを取得します: これは/usr/local/mariadb/data/mariadb.sock実際の場所(少なくとも私のマシン上)のように見えるので少し混乱します

  3. をどこに設定すれ/usr/local/mariadb/data/mariadb.sockば実際に設定できるのかと思う/tmp/mysql.sockので、編集する代わりにデフォルト設定を使用できます.my.cnf(ただし、今は疲れすぎてそれを理解できません...)

  4. ある時点で、これを思いつく前に、他の回答で言及されていることも行いました。


2

実行する必要がありますmysql_install_db-最も簡単な方法は、インストールディレクトリにいる場合です。

$ cd /usr/local/Cellar/mysql/<version>/ 
$ mysql_install_db

または、次のようなパラメーターをフィードmysql_install_dbすることもできbasedirます。

$ mysql_install_db --basedir="$(brew --prefix mysql)"

2

Macで同じ問題に直面し、次のチュートリアルに従って解決しました

https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew

ただし、続行する前に、古いバージョンを強制終了またはアンインストールすることを忘れないでください。

コマンド:

brew uninstall mariadb

xcode-select --install

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" - See more at: https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew#sthash.XQoxRoJp.dpuf

brew doctor

brew update

brew info mariadb

brew install mariadb

mysql_install_db

mysql.server start

1
あなたが提供したリンクがどのようにあなたを助けたかをいくつかの簡単な例で説明してください。リンクが消える可能性があるため、回答が削除される可能性があります。
カートファンデンブランデン

2

再起動後、ローカルのmariadbに接続できなかったため、検索によってこのページに移動しました。私の解決策をあなたと共有したいと思いました。

/ usr / local / etc /のmy.cnf.dディレクトリが見つからないことに気づきました。

これはhomebrewの既知のバグであり、そこで説明および解決されています。https://github.com/Homebrew/homebrew-core/issues/36801

すばやく修正する方法:mkdir /usr/local/etc/my.cnf.d


これでうまくいきました。brew update再起動後にローカルmariadbに接続できませんでした。brew services list結果はmariadbステータスstartedを黄色で示していました。先端をありがとう。
nterms

1

mysql_secure_installationを実行して新しいパスワードを入力すると、次のようになります。


エラー:ソケット '/tmp/mysql.sock'(2)を介してローカルMySQLサーバーに接続できません


この回答から次のことを試したときに気づきました:

netstat -ln | grep mysql

それは何も返さなかった、そして私はそれが.sockファイルがなかったことを意味すると思った。

そのため、my.cnfファイル(/etc/my.cnfまたは私の場合は/usr/local/etc/my.cnf)に以下を追加しました。

下:

[mysqld]
socket=/tmp/mysql.sock

下:

[client]
socket=/tmp/mysql.sock

これはこの投稿に基づいていました

次に、mysqlを停止/再起動し、mysql_secure_installationを再試行しました。これにより、最終的に新しいルートパスワードを入力し、他のセットアップ設定を続行できます。

これが誰かの役に立つことを願っています。男、私はこれが嫌い...


0

このスレッドを完了するだけです。したがって、MAMP(PRO)はかなり頻繁に使用されます

ここの道は

/Applications/MAMP/tmp/mysql/mysql.sock

0

データベースを初期化してから起動することにより、システム設定ペインで手動でmysqlを起動しました。これは私の問題を解決しました。


0

私の場合、犯人はログファイルで見つかりました:

$ tail /usr/local/var/mysql/<hostname>.lan.err
2019-09-19  7:32:21 0 [ERROR] InnoDB: redo log file './ib_logfile0' exists. Creating system tablespace with existing redo log files is not recommended. Please delete all redo log files before creating new system tablespace.
2019-09-19  7:32:21 0 [ERROR] InnoDB: Database creation was aborted with error Generic error. You may need to delete the ibdata1 file before trying to start up again.

ib_logfile0エラーを取り除くために名前を変更しました(ib_logfile1後で同じことをしなければなりませんでした)。

mv /usr/local/var/mysql/ib_logfile0 /usr/local/var/mysql/ib_logfile0_bak
mv /usr/local/var/mysql/ib_logfile1 /usr/local/var/mysql/ib_logfile1_bak
brew services restart mariadb

0

同じ問題がありました。これらの方法をすべて試した後、成功しませんでした。

tail -f the-mysql-or-maria-db-error-file.err

別のコンソールで:

brew services restart mariadb

次のエラーが発生しました:

"MAC HOMEBREWクラッシュリカバリが失敗しました。問題を修正して(たとえば、メモリ不足エラーの場合)、再起動するか、tcログを削除してmysqldを起動してください"

だから私はtc.logエクステションをmariadb に変更しtc.log.txtて再起動しました

brew services restart mariadb

やった!


0

これは私にとってはうまくいきます:

brew upgrade mysql

ありがとう


0

私にとって、私はmariadbずっと前にインストールしてから、をインストールしましたmysql@5.7

を実行するとmysql -uroot、エラーが発生します。 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

答えを読む:

  • アンインストールしました mariadb
  • フォルダを削除しました /usr/local/var/mysql
  • コマンドを実行した mysqld --initialize

その後、私はできました mysql -uroot -p


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.