記憶あやふや・ゆるゆる記事につき注意
結論
ポート番号で接続しようとしていたが、ポート番号が無く、ソケット接続なるもので接続できた。
環境
- MacOS High Sierra バージョン10.13.6
- MySQL Ver 8.0.12 for osx10.13 on x86_64 (Homebrew)
- MySQL Workbench 8.0
経緯
- それまでのローカルのMySQLでは起動できなかったので、試行錯誤の末、アンインストールして、再度インストール、そして
mysql.server start
に成功した。 - Workbenchから接続しようとするも、うまくいかない。
原因と解決策
ポート番号で接続しようとしていたが、ポート番号が存在しなかった。
->代わりにソケットなるものが定義されていたので、ポート番号を指定する接続方法ではなく、ソケット接続なる方法でDBに接続した。
確認した手順
1. とりあえず接続できないか試行錯誤する。
MySQLをインストールしてから、特にパスワードやポート番号などの設定の変更を行っていない。はず。なので、
とデフォルト値を入力。Hostnameにはlocalhost
を入力したら、写真の通りに変更するようにWorkbenchがオススメしてきたので素直に従った。
portは3306がデフォルトだそうで、そのままにしていた。usenameは確かデフォルト(自分で入力したっけ...?)でrootだった($ select User from mysql.user;
を使えばUser名は確認できる)。パスワードは、初期状態だと無しでもログインできる?みたいな記事を見かけたので、空っぽにしたり、rootを入れたりしたが、それでもログインできなかった。
2. ログファイル探してみたり、パスワード初期化してみたり
その後知人曰く、ログを見れば初期パスワードがどこかに書かれているみたいなことを聞いたので、ログファイルを探してみたがうまく見つけられなかった。このとき参考にしたページはこちら
めんどくさかったので↓のページを参考に、パスワードを変更することにした。
MySQL5.7でrootパスワード初期化変更メモ / 2017年10月
そして変更後のパスワードを入力したが接続失敗。
3. やっぱりポート番号がおかしいのでは?
Step5・MySQLの状態を確認する: MySQL初心者入門講座を参考にして、ポート番号を確認した。
すると上記ページの手順7にあった写真とは異なり、
TCP port
が存在しなかった。が、
代わりにUNIX socket
が定義されていた。
そこでLocal Socket/Pipe
を選択し、
そして、ソケットのパス?を入力して、上で再設定したパスワードを入力したら、
接続に成功した。
なぜポート番号がないのかはよく分かっていない。
MySQLがうまく起動しないので、2,30の記事を見てhomebrewでアンインストール&インストールしたりした。
その後エラーでソケットファイル(へのアクセス権?)が無いうんぬんとか言われて何やかんや対処したような気もするが、MySQL関連のあらゆるファイルを削除してから再インストールしたらうまくいった。こういうわけのわからない処理をしたことが原因なのかもしれない。
あるいは別途dockerコンテナ内で他のDBを接続していたことが原因かもしれない。
また分かったら追記します。