IT大生、洋楽和訳とプログラミング

これからのIT時代を生き抜くブログ。

【MySQL / mac】起動できない!エラーばっかり!

進めど進めどエラー

とにかくエラーばかり出てくるのです。5つくらいのサイトを梯子してようやく解決したのでそれをまとめようと思います。

 

pidファイルってなんやねん

最初の問題は、

$ mysql.server start
Starting MySQL
.. ERROR! The server quit without updating PID file (/usr/local/var/mysql/****.pid).

このようなエラーが出てくるというものです。 

最初に参考にしたのはこのサイトです。

qiita.com

原因は二つ考えられ、「pid ファイルが存在しない」か、「権限がない」のどちらかということです。

最初はpidファイルを作成してみようと取り掛かりましたが、これが間違いでした、、、

作成しても、立ち上げようとすると消えてしまい、結局エラーが出てしまいます。なんで消えるのかはよくわかりません。

結論を言いましょう

このエラーは、根本はユーザーにアクセス権がなかったことでした。そこで、

  1. セーフモード(起動時 Command + R)
  2. 日本語
  3. 上のメニューから「ターミナル」
  4. $ csrutil disable
  5. $ reboot
  6. 再起動されて、完了

詳しくは以下のサイトがわかりやすいです。

qiita.com

この手順を踏むことで、アクセスできるようになりました!

 

早速MySQLにログインしようとすると今度は新しいエラーが、、

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

こちらのサイトを参考に。

kenzo0107.hatenablog.com

// mysql停止
$ service mysqld stop

と合ったのですが、コマンドが見つからなかったので、

$ mysql.server stop

Shutting down MySQL

. SUCCESS! 

 こちらのコマンドでMySQLを停止しました。

その後、進めていったのですが

// rootユーザにlocalhostの全DBアクセス権限付与
mysql> GRANT ALL PRIVILEGES on *.* to root@localhost IDENTIFIED BY '(root's password)' WITH GRANT OPTION;
Query OK, 0 rows affected (0.01 sec)

ここの記述でうまくいかず、断念。

www-creators.com

するとこのサイトにたどり着きました。どうやら

 MySQL8 だと上記の方法は廃止されているようです。

 

うまくいったかと思ったら結局エラーの連鎖に。

うまくまとめようと思って、進捗を書きながら進めていましたが、そんな余裕がないほどエラーが連発。そこで、とにかくサイトを回りまくって出たサイトがこちら。

qiita.com

どのサイトも、一旦アンインストールすればうまくいくと言っていました。それを試してもうまくいかないということは、アンスト自体がうまくいってないのでは?という結論に至りました。

そこで、アンストの方法を検索したところ、このサイトがヒット。

そして、勝利の鍵はこのコマンドにありました。

$ brew doctor

なんと、これだけ。たったこれだけで問題がわかりました。

Warning: A newer Command Line Tools release is available.

Update them from Software Update in System Preferences or run:

  softwareupdate --all --install --force

 

If that doesn't show you an update run:

  sudo rm -rf /Library/Developer/CommandLineTools

  sudo xcode-select --install

 

Alternatively, manually download them from:

  https://developer.apple.com/download/more/.

 

 

Warning: "config" scripts exist outside your system or Homebrew directories.

`./configure` scripts often look for *-config scripts to determine if

software packages are installed, and which additional flags to use when

compiling and linking.

 

Having additional scripts in your path can confuse software installed via

Homebrew if the config script overrides a system or Homebrew-provided

script of the same name. We found the following "config" scripts:

  /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7-config

  /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7m-config

  /Library/Frameworks/Python.framework/Versions/3.7/bin/python3-config

  /Users/XXXX/opt/anaconda3/bin/icu-config

  /Users/XXXX/opt/anaconda3/bin/krb5-config

  /Users/XXXX/opt/anaconda3/bin/freetype-config

  /Users/XXXX/opt/anaconda3/bin/xslt-config

  /Users/XXXX/opt/anaconda3/bin/libpng16-config

  /Users/XXXX/opt/anaconda3/bin/python3.7-config

  /Users/XXXX/opt/anaconda3/bin/libpng-config

  /Users/XXXX/opt/anaconda3/bin/xml2-config

  /Users/XXXX/opt/anaconda3/bin/python3.7m-config

  /Users/XXXX/opt/anaconda3/bin/python3-config

  /Users/XXXX/opt/anaconda3/bin/curl-config

  /Users/XXXX/opt/anaconda3/bin/ncursesw6-config

  /Users/XXXX/opt/anaconda3/bin/pcre-config

なんだこのWarningは、、、

上のやつは関係ありません。問題は下のやつです。

これが意味するのは、「homebrewの管轄外からインストールした設定があって、ごっちゃになるかもしれませんよー。俺が勝手に上書きしちゃうかもよー」というお知らせです。
なんと、悪さをしていたのはオオヘビだったようです。

これをエイリアスでどうのこうの、、、とサイトに書いてあったのですが、そんなのわかりません。手当たり次第にanaconda 系のものを消しまくりました。

さらに、Python のコンフィグも引っかかっているようで、それも削除してしまいました。

その後に、もう一度doctor コマンドを実行すると、

Warning: Broken symlinks were found. Remove them with `brew cleanup`:

  /usr/local/bin/2to3

  /usr/local/bin/2to3-3.7

  /usr/local/bin/easy_install-3.7

  /usr/local/bin/idle3

  /usr/local/bin/idle3.7

  /usr/local/bin/pip3

  /usr/local/bin/pip3.7

  /usr/local/bin/pydoc3

  /usr/local/bin/pydoc3.7

  /usr/local/bin/python3

  /usr/local/bin/python3-config

  /usr/local/bin/python3.7

  /usr/local/bin/python3.7-config

  /usr/local/bin/python3.7m

  /usr/local/bin/python3.7m-config

  /usr/local/bin/pyvenv

  /usr/local/bin/pyvenv-3.7

このように出てきました。雑に削除したらリンクだけが残ってしまったようです。

$ brew cleanup

Pruned 17 symbolic links from /usr/local

それらも削除しました。

その他にも様々なコマンドで削除していきましたが、詳しくはリンク先を参照してください。

なんやかんやで、改めてMySQL を再×n回 ダウンロード。。。

$ brew install mysql

Updating Homebrew...

==> Auto-updated Homebrew!

Updated 2 taps (homebrew/core and homebrew/cask).

==> Updated Formulae

Updated 27 formulae.

==> New Casks

silicon-info

==> Updated Casks

Updated 18 casks.

 

==> Downloading https://homebrew.bintray.com/bottles/mysql-8.0.22_1.catalina.bot

Already downloaded: /Users/kento.f/Library/Caches/Homebrew/downloads/21a40425b42f6518be98ad3e2dc156c760b92d3c67a33bf885a2a73c4252eb10--mysql-8.0.22_1.catalina.bottle.1.tar.gz

==> Pouring mysql-8.0.22_1.catalina.bottle.1.tar.gz

==> /usr/local/Cellar/mysql/8.0.22_1/bin/mysqld --initialize-insecure --user=ken

==> Caveats

We've installed your MySQL database without a root password. To secure it run:

    mysql_secure_installation

 

MySQL is configured to only allow connections from localhost by default

 

To connect run:

    mysql -uroot

 

To have launchd start mysql now and restart at login:

  brew services start mysql

Or, if you don't want/need a background service you can just run:

  mysql.server start

==> Summary

🍺  /usr/local/Cellar/mysql/8.0.22_1: 294 files, 296.5MB

とりあえずビール出てきた!さて、ここからが問題です。

$ mysql.server start

Starting MySQL

. SUCCESS! 

あれ??SUCCESSって出てる、、、成功したの!?成功したぞーーーーー!

丸4日ほどかけてようやくスタートが切れました。(まだスタートしただけです)

原因はおそらく二つの方法でMySQL をインストールしたことと、アナコンダが入っていたことでファイルが干渉していたことだと思われます。キーマンはbrew doctor でした。

導入でてこずっている皆さんはぜひ参考にしてみてください!