はじめに
初心者の備忘として。
Laravel×MySQLで学習を進めていると、結構最初の段階でエラーが出て進めなくなった。調べてみたところMySQLのアップグレードで解消できる模様。アップグレードがてら、今後の参考にしようということでまとめてみます。
■参考になる(かもしれない)人
・MySQL5.6から5.7にアップグレードしたい人
・ドットインストールの**ローカル開発環境の構築 [macOS版]**のレッスンでMySQLをインストールした人(MySQLを、MacでYumリポジトリを使ってインストールした人)
【困った① いろいろなやり方があったけど…】
アップグレードについて調べていると、いろいろな方法が。この記事(Qiita)とかこの記事(企業発信)はサーバーの停止とかMySQLの削除とかしているからそれは必須?違う箇所があるけどどっちが正しい?どれをやっても同じ?
調べても調べてもわからないので、初めてMySQLの公式ドキュメントをみてみることに。
アップグレード手順は、プラットフォームと初期インストールの実行方法によって異なります。現在のMySQLインストールに適用される手順を使用します。
- Windows以外のプラットフォームでのバイナリおよびパッケージベースのインストール…
- MySQL Yumリポジトリを使用したEnterprise LinuxプラットフォームまたはFedoraへのインストール…
- MySQL APTリポジトリを使用したUbuntuへのインストール…
- MySQL SLESリポジトリを使用したSLESへのインストール…
- Dockerを使用して実行されるインストール…
- Windowsでのインストール…
・・・なるほど。初期インストールの実行方法によってアップグレードの方法は異なるのか。しかも現在インストールされているバージョンによっても変わってくる模様。だからいろいろな方法が紹介されているのか!
ここで新たな問題が。
【困った② どうやってMySQLをインストールしたのか覚えていない…】
初期インストールの実行方法によってアップグレードする方法が違うのはわかったけど…どうやってインストールしたっけ?
ドットインストールの「ローカル開発環境の構築 [macOS版]」を進めていたら、いつの間にかPHPとかMySQLが使えるようになっていたな(確か)、と思い出しもう一度動画をおさらい。
仮想マシンの設定をしよう(#7)でgitをインストールし、gitを使ってアプリケーション設定用のスクリプトをDL・実行していた。その中でphpやMySQLが、yum を使ってインストールされていた。つまりMacユーザでドットインストールでローカル開発環境を整えた場合、MySQL Yumリポジトリを使用している模様。
同じ状況の人がいれば(いるのかな?)、これ以降の記事が参考になると思います(多分)。
【環境】
・Mac
・CentOS 6.8
・ローカル開発環境(Vagrant,virtualbox)
【困った③ じゃあどうやればいいの?】
MySQL Yumリポジトリを使用したMySQLのアップグレードをとりあえず読んでみた。箇条書きにしてみます。
- デフォで、自動で現在のリリースシリーズの最新バージョンにしてくれる(例えば、5.6.xの「.x」シリーズは自動的に更新される。5.7には更新されない。)
- 5.6から5.7に更新するには、5.6のサブリポジトリを無効にし、5.7のサブリポジトリを有効にする必要がある。
- 上の設定をした後、MySQLのアップグレードを行う
なるほど。なんとなくわかった(気がする)。
STEP 0. yumのユーティリティツールをインストール(必要?)
後でインストールするMySQLのバージョンを5.7にするために5.6を無効化したりするのに利用するらしいから、上記で触れたドキュメントには記載がなかったけど実行してみた。「インストールしています」とかいろいろ表示されたから、必要だったのかな??(誰か教えてください)
【余談】そもそもyumって何??
[vagrant@localhost ~]$ sudo yum -y install yum-utils
STEP 1. サブリポジトリの有効/無効の確認
MySQL Yumリポジトリ内のサブリポジトリを下記のコマンドで全て表示し、それぞれの有効・無効の確認をする。
ふむふむ、mysql56-community
は有効で、mysql57-community-・・・
は無効になっている(だからバージョンが5.6なのかな?)。
[vagrant@localhost ~]$ yum repolist all | grep mysql
mysql-connectors-community MySQL Connectors Community 有効: 137
mysql-connectors-community-source MySQL Connectors Community - Sour 無効
mysql-tools-community MySQL Tools Community 有効: 93
mysql-tools-community-source MySQL Tools Community - Source 無効
mysql55-community MySQL 5.5 Community Server 無効
mysql55-community-source MySQL 5.5 Community Server - Sour 無効
mysql56-community MySQL 5.6 Community Server 有効: 606
mysql56-community-source MySQL 5.6 Community Server - Sour 無効
mysql57-community-dmr MySQL 5.7 Community Server Develo 無効
mysql57-community-dmr-source MySQL 5.7 Community Server Develo 無効
STEP 2. サブリポジトリの5.6の無効化・5.7の有効化
MySQL 5.6シリーズのサブリポジトリを無効にして、MySQL 5.7シリーズのサブリポジトリを有効にする(ドキュメントの説明はちょっとややこしかった)。
[vagrant@localhost ~]$ sudo yum-config-manager --disable mysql56-community
[vagrant@localhost ~]$ sudo yum-config-manager --enable mysql57-community-dmr
ちなみに、sudo yum-config-manager --enable mysql57-community
と実行しても、読み込んだプラグイン:fastestmirror
とだけ表示されて有効に変わらなかったので、他の記事も参考に-dmr
をつけて実行したところ、ちゃんと有効に変わった。
STEP 3. MySQLのアップグレード
[vagrant@localhost ~]$ sudo yum update mysql-server //dnfが有効でない場合
※dnf有効の場合、sudo dnf upgrade mysql-server
【余談】・・・dnfって何??
STEP 4. 確認
ちゃんとMySQL5.7になっているか確認。
[vagrant@localhost ~]$ mysql --version
mysql Ver 14.14 Distrib 5.7.31, for Linux (x86_64) using EditLine wrapper
参考
・Windows以外のプラットフォームでのバイナリおよびパッケージベースのインストールについて
・MySQL Yumリポジトリを使用したEnterprise LinuxプラットフォームまたはFedoraへのインストールについて
・MySQL APTリポジトリを使用したUbuntuへのインストールについて
・MySQL SLESリポジトリを使用したSLESへのインストールについて
・Dockerを使用して実行されるインストール
・Windowsでのインストールについて
【余談】
■そもそもyumって何??
- yumは、Red Hat系のLinuxディストリビューションで使われている“RPMパッケージ”を扱うためのパッケージ管理コマンド。
- yumコマンドの書式:
yum [オプション] コマンド [パッケージ名など]
(例)yum install[update/erase] パッケージ名
■・・・dnfって何??
DNFまたはDandified Yum (ダンディファイド ヤム)は、RPMベースのパッケージ管理システムを採用しているLinuxディストリビューション用のパッケージマネージャであるYum 3.4のフォークであり、Yumの事実上の後継バージョン