婚活・恋活・再婚マッチング【マリッシュ(marrish)】
Skypeを使用しない独自のシステム【ECCオンラインレッスン】
リゾートバイト派遣業界No1の求人サイト【リゾバ.com】
次はあなたが出会う番です♡【ラブサーチ】

Mysql5.7からMysql8にアップグレードしたらデーターベースに接続できない。PID関連のエラーがでる時の改善方法。

*この記事はMacOSX向けです。
データのバックアップをした上で試してください。
そもそもmysqldumpができないので、

/usr/local/var/mysql

を丸ごとコピーしておきます。

Mysql5.7からMysql8.0にアップグレードしたら接続できない。

ローカル環境での開発などで既存のデータにアクセスできず困ってしまったのでその解決方法を投稿します。

Mysql8にしたら接続できない原因は?

brewなどでmysql5.7を使っていて、mysqldが起動している状態でアップグレード(brew update && brew upgrade)を実行してmysql8にアップグレードされるとPIDファイルがおかしくなるようです。

エラーの内容は

1:

Can't connect to local MySQL server through socket '/tmp/mysql.sock' 

2:

Starting MySQL... ERROR! The server quit without updating PID file 

3:

Couldn't execute 'SHOW DATABASES': The user specified as a definer ('mysql.infoschema'@'localhost') does not exist

1 のエラーはそもそもmysqldが動いてないのでソケットファイルが作られてない状態なので今は無視しましょう。
2 のエラーに関してはプロセスIDのファイルを更新できずに終了したよです。こちらが問題なので直していきます。
3 は接続はできたけど、mysql8用のテーブルや機能追加、権限追加などがされてないのででるエラーですがコマンドワンライナーで解決できます。

mysql8をアンインストール

homebrewのコマンドで削除します。/usr/local/var/mysqlのデータは削除されず残ります。
(念のためバックアップをとってください)

brew uninstall mysql

mysql5.7をインストール

こちらも

brew install mysql@5.7

でバージョンを指定してインストールします。

mysql5.7を停止する

下記コマンドを実行します。実行するとmysql5.7のPIDファイル一度更新されます。

/usr/local/opt/mysql@5.7/bin/mysql.server stop

mysql5.7の自動起動を停止

OS起動じにmysqlを起動するようにしている環境は下記コマンドでシンボリックリンクを削除します。

brew services stop mysql

mysql5.7をアンインストールする

brew uninstall mysql@5.7

mysql8をインストールする

brew install mysql

mysql8を起動する

mysql.server start

起動できない場合は /usr/local/mysql/data/****.local.pidや /usr/local/mysql/data/****.local.errを削除して下記コマンドを実行

touch /usr/local/mysql/data/****.local.pid

***はホスト名(Macのコンピュータ名)などになりますので環境により違いますので適宜修正してください。

エラーなく起動できたら

mysql_secure_installation

で設定をする

ここまでエラーが出なければ

mysql -uxxxxx -pxxxxx

などでmysqlクライアントに接続できるはずです。
ただこのままだとshow databases;などスキーマ関連でエラーが出ます。
エラー内容は

Couldn't execute 'SHOW DATABASES': The user specified as a definer ('mysql.infoschema'@'localhost') does not exist

システムテーブルと追加された権限や機能を使えるようにする

sudo mysql_upgrade -uxxxxx -pxxxxx

xxxxの部分はユーザー名パスワードを入れてください。

ここまでくれば既存のmysql5.7で使用していたデータもそのままで使えるようになります。

婚活・恋活・再婚マッチング【マリッシュ(marrish)】
Skypeを使用しない独自のシステム【ECCオンラインレッスン】
リゾートバイト派遣業界No1の求人サイト【リゾバ.com】
次はあなたが出会う番です♡【ラブサーチ】