MacのターミナルからMySQLへログイン出来ないとき

Mac OSへHomebrewを使用してインストールしたMySQLへターミナルから接続を試みた際、ログイン出来ない事がありましたので、解決方法と行った手段をメモします。

環境 : Mac OS High Sierra 10.13.12、MySQL Ver 8.0.16 for osx10.13 on x86_64 (Homebrew)

ターミナルからインストール済みのMySQLログイン出来ない。。

rootユーザでMySQLへログイン

以下のコマンドでMySQLに用意されている一番大きな権限をもつrootユーザでログインを試みる
mysql -u root

ログイン出来ない原因1. ソケットファイルが存在しない

表示されたエラー
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

/tmp/mysql.sockというソケットファイルと呼ばれるログインに必要なファイルが存在しないようなので作成する。
sudo touch /tmp/mysql.sock

MySQLを再起動(念のため管理者権限のsudoも付けて実行)
sudo mysql.server start

ログイン出来ない原因2. mysqlディレクトリの所有者が正しくない

先述の原因1を解決後、再度rootユーザでログインを試みましたが、異なるエラーが表示されました。

表示されたエラー
Starting MySQL

…. ERROR! The server quit without updating PID file (/usr/local/var/mysql/ユーザ名noMacBook-ea.pid).

/usr/local/var/mysql というディレクトリとファイルの所有者を _mysql にしないといけないようです。

sudo chown -R _mysql:_mysql /usr/local/var/mysql

再びMySQLを再起動
sudo mysql.server start

再起動出来たらもう一度 rootユーザで接続を試みます。
mysql -u root

MySQL再起動時の注意点!

MySQLの再起動を行った際、
mysqld_safe A mysqld process already exists
と出ている場合は再起動出来ていません!

Starting MySQL
SUCCESS!

とも出ているのでわかりづらいですが…

その場合は、直前のプロセスが残っている可能性がありきちんと終了させる必要があります。

残っているmysqlプロセスIDを確認
ps -ef | grep mysql

プロセスを強制終了
sudo kill -9 プロセスID

もしくはMySQLを停止後、再起動。
sudo mysql.server stop
sudo mysql.server start

解決にあたり今回は以下の記事を参考にさせていただきました。

https://qiita.com/masa_stone22/items/38a286a89c309de7d44e
https://qiita.com/mugi_chan_tea/items/e07dfee06a4310825f43
https://easyramble.com/mysql-server-pid-file-error.html

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください