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. ソケットファイルが存在しない
ログイン出来ない原因1. MySQLが起動出来ていない
表示されたエラー
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起動に成功すると自動的に作成されるようです。
MySQLを再起動
sudo mysql.server start
起動前
KENnoMacBook-ea:~ ken$ ls /tmp 0E1F6442-1C63-4CF3-90B2-A564219CFC84 ExmanProcessMutex 1D517B88-8385-4DFE-8F67-D30FB5232792 adobegc.log 7A026307-61DF-46C8-94EB-4BA7FFAD9004 com.adobe.AdobeIPCBroker.ctrl-ken 963B1E72-3D17-42FF-8821-65B1C412C712_IN com.apple.launchd.3gC3HsE1gp 963B1E72-3D17-42FF-8821-65B1C412C712_OUT com.apple.launchd.xP0QeugEek ABF356B2-CE5F-41BE-8BED-DAD83519D95B jp_co_roland_RDUSB012FDev_SF AlTest1.err powerlog AlTest1.out swtag.log B062101C-F109-4C45-BB5A-60D9BA1C52C0
起動後
(mysql.sock他、関連ファイルが作成されている)
KENnoMacBook-ea:~ ken$ ls /tmp 0E1F6442-1C63-4CF3-90B2-A564219CFC84 com.adobe.AdobeIPCBroker.ctrl-ken 1D517B88-8385-4DFE-8F67-D30FB5232792 com.apple.launchd.3gC3HsE1gp 7A026307-61DF-46C8-94EB-4BA7FFAD9004 com.apple.launchd.xP0QeugEek 963B1E72-3D17-42FF-8821-65B1C412C712_IN jp_co_roland_RDUSB012FDev_SF 963B1E72-3D17-42FF-8821-65B1C412C712_OUT mysql.sock ABF356B2-CE5F-41BE-8BED-DAD83519D95B mysql.sock.lock AlTest1.err mysqlx.sock AlTest1.out mysqlx.sock.lock B062101C-F109-4C45-BB5A-60D9BA1C52C0 powerlog ExmanProcessMutex swtag.log adobegc.log
ログイン出来ない原因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