LoginSignup
5
6

More than 3 years have passed since last update.

MySQLが起動できない エラー備忘ログ その1

Last updated at Posted at 2020-03-16

背景

phpの学習中にmysqlをいじっていましたw
急にmysqlが起動できなくなり、エラー解消にほぼ半日躓いてしまったので、
その解決策と試したことを記事としてのせたいと思う!!

mysqlでのエラー文との遭遇

エラー内容一覧

mysqlを起動を確かめる

 mysql.server start
Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/ユーザーMBP.pid).

意味はpidファイルを更新せずに終わったよ!ってエラー?
すいません、、、意味がわかりません(涙)

pidファイルとは?

Pidファイルには、特定のプログラムのプロセスID(番号)が含まれています。たとえば、Apache HTTPDはメインプロセス番号をpidファイル(通常のテキストファイル、それ以上のもの)に書き込み、後でそこに含まれる情報を使用して停止します。 cat filename.pid | xargs killを使用して、その情報を使用して自分でプロセスを強制終了することもできるみたいです。

ググって試したこと!

①権限関係

権限確認すると「_mysql:_mysql」だったので、自分:adminに変更した。

chown -R [ユーザ名] /usr/local/var/mysql

うまくいかず。

②エラーログ確認しにいく

cd /usr/local/var/mysql
ls (lsコマンドでmysqlディレクトリの中身を確認する)
その中に
(ユーザー)MBP.err   というファイルがあるので
cat (ユーザー)MBP.err (catコマンドでファイルの中身を確認)

エラーログの中身に

2020-03-16 17:32:04 25993 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

調べてみると、インストール時に mysql_install_db が実行されるが、ディレクトリがわからない状態らしい。
インストール場所とユーザ名を指定して明示的に実行すると良さそうらしいですが、、

mysql_install_db --datadir=/var/lib/mysql --user=mysql

うまくいかず...
参考ページ
https://qiita.com/840_/items/06f32fecbe57c3fdf5ec

③最終手段 全てをアンイストール!!

よく見るとmysql、mysql@5.6、mysql@5.7やらいっぱいmysqlが存在してしまっていたので全てアンインストール!

の前に
*実行前に
そのまま解決手順を実行してしまうと、mysqlのデータが削除されてしまいます。
以下の手順を実行し、バックアップを行ってください!!

$ brew services stop mysql 
 mysqlを一旦停止
$ cp -pr /usr/local/Cellar/mysql /適当な場所/mysql_backup
  これで、mysqlのデータバックアップ。
brew uninstall mysql  
brew uninstall mysql@5.6 
brew uninstall mysql@5.7

まずはmysqlをアンインストール!

次にlocal配下のmysqlを全て削除する

$ rm -rf /usr/local/mysql
$ rm -rf /Library/StartupItems/MYSQL
$ rm -rf /Library/PreferencePanes/MySQL.prefPane
$ rm -rf /Library/Receipts/mysql-.pkg
$ rm -rf /usr/local/Cellar/mysql*
$ rm -rf /usr/local/bin/mysql*
$ rm -rf /usr/local/var/mysql*
$ rm -rf /usr/local/etc/my.cnf
$ rm -rf /usr/local/share/mysql*
$ rm -rf /usr/local/opt/mysql

ポイント!

brew uninstall mysqlでは削除できないファイル群を削除するのが大事!
残っているとアンインストールしても解消されないので、すっきり全て削除!

mysqlを再インストール

brew install mysql(@__使用するmysqlバージョンを指定)

mysqlコマンドをどこからでも実行できるようする

$ echo 'export PATH="/usr/local/opt/mysql/bin:$PATH"' >> ~/.bash_profile

 mysqlバージョンを指定している場合(mysql@5.6)
$ echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> ~/.bash_profile

$ source ~/.bash_profile 

  mysqlのコマンドが打てるか確認する
$ which mysql
  以下のように表示されれば成功
/usr/local/opt/mysql/bin/mysql

最後にmysqlを起動

 mysqlの状態を確認するコマンドです
$ mysql.server status

 以下のように表示されれば成功
 SUCCESS! MySQL running (29385)

他にもプロセスを確認

$ ps ax | grep mysql
29714 s001  S      0:00.03 /bin/sh /usr/local/Cellar/mysql/8.0.19/bin/mysqld_safe --datadir=/usr/local/var/mysql --pid-file=/usr/local/var/mysql/ユーザMBP.pid
29825 s001  S      0:05.17 /usr/local/Cellar/mysql/8.0.19/bin/mysqld --basedir=/usr/local/Cellar/mysql/8.0.19 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/8.0.19/lib/plugin --log-error=ユーザMBP.err --pid-file=/usr/local/var/mysql/ユーザMBP.pid
29837 s001  S+     0:00.00 grep mysql

ok問題ないですね!

参考
https://teratail.com/questions/199085

これでようやく解決してくれました!

本当に強引な方法ではありますがうまくいきました!

最後に

本当によく躓くエラーなので反省をとこれからの課題として記事として残しておきます!!

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6