1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

mysqlのERROR! The server quit without updating PID file解決しました

Posted at

## 事象

mysql@8.0をインストールをしたのですが、アップデートでパスワード形式に変更があったらしく、node.jsとうまく噛み合いませんでした。

なので、旧式のパスワード形式に変更したいと思い、権限変更したり、アンストインスト繰り返し試していたところ、動かなくなりました。

# スタートできない

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

# stopできない

$ mysql.server stop
 ERROR! MySQL server PID file could not be found!

# セーフ起動できない

$ mysqld_safe
2017-06-24T08:14:13.6NZ mysqld_safe Logging to '/usr/local/var/mysql/XXXXXX.local.err'.
2017-06-24T08:14:13.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql
2017-06-24T08:14:14.6NZ mysqld_safe mysqld from pid file /usr/local/var/mysql/XXXXXXX.local.pid ended

再インストールで治るか検証

$ brew uninstall mysql
$ brew install mysql

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

/usr/local/var/mysql/XXXXXXXX.local.pidが一時的に作られてるらしいのですが$ mysql.server start中に消えてしまう現象が発生しています。

理由としては、クラッシュしたファイルをアップデートすることをmysqlが許してないみたいです

参考にした記事(コピペ)

$ brew uninstall mysqlでも消えないファイルがあるらしいので下記記事をコピペをして消去の対応をしました

mysqlがどうしても起動しない
@_natsu_no_yuki_

どうしよう!困った時のMac上のMySQLのアンインストール&再インストール、動作確認手順
@akiko-pusu

/usr/local/var/mysql/XXXX.local.errの確認

かなり参考になったので、下記記事の引用貼っときます。エラーログは私の実際のログに置き換えときました。

https://gihyo.jp/dev/serial/01/mysql-road-construction-news/0096

$ cd /usr/local/var/mysql/
$ ls *.err
MacBook2.err

>今回は`MacBook2.err`と言う名前でしたが,ホストや実行環境によって名前は変わると思うので適宜変更して実行してください。

>`tail -f MacBook2.err` を行った状態で(err名は適宜置き換えて実行してください),別のターミナルから`mysql.server start`を実行して,どのようなエラーが表示されるか確認してみましょう。

>```
$ tail -f MacBook2.err ←1つ目のターミナルで実行して待ちます
$ mysql.server start ←別のターミナルで実行します

起動に失敗した場合には1つ目のtail -fを実行しているターミナルに以下のようなエラーログが吐き出されます。

# 私の実際のエラーです
xxxx@{pc名} mysql % tail -f {pc名}.local.err
2020-08-24T14:06:55.301175Z 0 [ERROR] [MY-011300] [Server] Plugin mysqlx reported: 'Setup of bind-address: '127.0.0.1' port: 33060 failed, `bind()` failed with error: Address already in use (48). Do you already have another mysqld server running with Mysqlx ?'
2020-08-24T14:06:55.301545Z 0 [ERROR] [MY-013597] [Server] Plugin mysqlx reported: 'Value '127.0.0.1' set to `Mysqlx_bind_address`, X Plugin can't bind to it. Skipping this value.'
2020-08-24T14:06:55.301872Z 0 [ERROR] [MY-011300] [Server] Plugin mysqlx reported: 'Setup of socket: '/tmp/mysqlx.sock' failed, another process with PID 72895 is using UNIX socket file'
2020-08-24T14:06:55.335175Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2020-08-24T14:06:55.335489Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2020-08-24T14:06:55.337415Z 0 [ERROR] [MY-010262] [Server] Can't start server: Bind on TCP/IP port: Address already in use
2020-08-24T14:06:55.337688Z 0 [ERROR] [MY-010257] [Server] Do you already have another mysqld server running on port: 3306 ?
2020-08-24T14:06:55.338189Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-08-24T14:06:56.343210Z 0 [System] [MY-010910] [Server] /usr/local/Cellar/mysql/8.0.21_1/bin/mysqld: Shutdown complete (mysqld 8.0.21)  Homebrew.
2020-08-24T14:06:56.6NZ mysqld_safe mysqld from pid file /usr/local/var/mysql/{pc名}.local.pid ended

恥ずかしながら英語読めないマンなのでエラーコピーしてgoogle翻訳へ、すると2行目に気になる文があり

2020-08-24T14:06:55.301545Z 0 [エラー] [MY-013597] [サーバー]プラグインmysqlxが報告: '値' 127.0.0.1 'が `Mysqlx_bind_address`に設定されているため、Xプラグインはそれにバインドできません。この値をスキップします。」

止まっていると思っていたmysqlがじつは動いていた?説が浮上したので、それらしいファイルを強制終了させていこうと思いました。

##強制終了の流れ

  1. $ sudo mysqladmin kill を実行
  2. アクテビティモニターで通信を確認
  3. uninstallコピぺ祭り
  4. $ brew install mysqlでインストール
  5. $ mysql.server startで正常に動くか確認

1.$ sudo mysqladmin kill を実行

強制終了するためkillコマンドについて調べているとmysql公式サイト曰く、

mysqladmin processlist および mysqladmin kill コマンドを使用して、スレッドを検査および強制終了することもできます。

外部から直接mysqlをいじれるコマンドらしかったのでsudoつけてから実行しました。

2.アクテビティモニターで通信を確認

次にアクテビティモニターを使用してmysqlっぽい名前が無いか確認。すると、
mysqld
というファイルが可動していたので、ダブルクリック→終了→強制終了で停止

3.uninstallコピぺ祭り

再度不要なファイルが残ってしまっている可能性があるので、再びコピペで消去してから
mysqlがどうしても起動しない

どうしよう!困った時のMac上のMySQLのアンインストール&再インストール、動作確認手順

4.$ brew install mysqlでインストール

~ $ brew install mysql
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> Updated Formulae
Updated 13 formulae.

==> Downloading https://homebrew.bintray.com/bottles/mysql-8.0.21_1.catalina.bottle.tar.gz
Already downloaded: /Users/shinozakimasaya/Library/Caches/Homebrew/downloads/0d017278caa06d8c2921f06801b920ebffaeb68cef50eb80973e70db449facc5--mysql-8.0.21_1.catalina.bottle.tar.gz
==> Pouring mysql-8.0.21_1.catalina.bottle.tar.gz
==> /usr/local/Cellar/mysql/8.0.21_1/bin/mysqld --initialize-insecure --user=shinozakimasaya --basedir=/usr/local/Cellar/mysql/
==> 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.21_1: 290 files, 291.2MB

5.$ mysql.server startで正常に動くか確認

$ mysql.server start
Starting MySQL
 SUCCESS! 

1.2 のどちらかが良かったのか、無事稼働してくれました。自分の場合はこうでしたが、人によってエラーが違うらしいので__/usr/local/var/mysql/xxxx.local.err__を確認しましょう。{pc名}だけ変えれば行けると思います。

$ cd /usr/local/var/mysql/
$ tail -f {pc名}.local.err
$ mysql.server start

##まとめ

適当にやっていたので、順番が違う可能性がありますが、工夫しながら自分に合った解決方法を見つけてみてださい。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?