私はこれを解決するためにかなりの時間を費やし、このエラーを探すときに常にこのページに戻ってきたので、誰かが私が失った時間を節約できることを期待して、ここに私の解決策を残します。私の場合、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.cnf
のmysql --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)]>
ノート:
ソケットを追加する必要があるグループについてはよくわかりません。最初に[client-server]を用意しましたが、[client]で十分だと考えました。だから私はそれを変更し、それはまだ動作します。
実行するmariadb_config | grep socket
と私は--socket [/tmp/mysql.sock]
それを取得します:
これは/usr/local/mariadb/data/mariadb.sock
実際の場所(少なくとも私のマシン上)のように見えるので少し混乱します
をどこに設定すれ/usr/local/mariadb/data/mariadb.sock
ば実際に設定できるのかと思う/tmp/mysql.sock
ので、編集する代わりにデフォルト設定を使用できます.my.cnf
(ただし、今は疲れすぎてそれを理解できません...)
ある時点で、これを思いつく前に、他の回答で言及されていることも行いました。