Homebrewを使ってmysql@5.7がインストールできない・・・
開発環境を構築する際に,mysql5.7をインストールしようとすると以下のようなエラーが
Error: mysql@5.7 has been disabled because it is not supported upstream! It was disabled on 2024-08-01.
どうやらサポート切れで2024年8月1日以降Homebrewを使ってmysql5.7をインストールできなくなっているようです。
ただ、そうはいっても古いシステムなどまだmysql5.7をインストールしないといけない場合もありそう。
解決策
まだインストールできなくなって日が浅いためか、なかなか解決策が見つからない・・・
ソースコードからbuildしてインストールする方法
いまのところこれが唯一macにmysql5.7を入れる方法らしい。
参考:
https://zenn.dev/noraworld/articles/legacy-mysql-mac
必要なライブラリのインストール
以下のコマンドを実行して必要なライブラリをインストールします。
cmakeとかはコードからbuildするときに必要
xcode-select --install
brew install cmake git ncurses openssl
以下から5.7.44をインストール
https://downloads.mysql.com/archives/community/
Operating SystemはSource Code、OS VersionはAll Operating Systems (Generic) (Architecture Independent)を指定します。
そして今ダウンロードしたファイルをホームディレクトリに移動し、以下のコマンドを実行
tar zxvf mysql-boost-VERSION.tar.gz
これでアーカイブが展開されmysql-5.7.44というフォルダが生成される。
インストール
自分の場合はホームディレクトリに展開したので、以下のフォルダをホームディレクトリに作成。
インストール時に生成されるフォルダやファイルを格納するためのものらしい。
mkdir mysql-home
mkdir boost
先ほど展開したフォルダに移動
cd mysql-5.7.44
以下のコマンドを実行
cmake -DCMAKE_INSTALL_PREFIX=/path/to/mysql-home \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/path/to/boost \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1
次に以下のコマンドを実行
make
make install
おそらくここでかなり時間がかかります。自分の場合は15分くらいかかりました。
データの初期化
mysql-homeディレクトリに移動します
cd mysql-home
そこに以下のディレクトリを作成、ここにデータが書き込まれていくらしい
mkdir mysql-files
所有者と権限を変更
sudo chown mysql:mysql mysql-files
sudo chmod 750 mysql-files
そして以下のコマンドを実行
bin/mysqld --initialize --user=mysql
ここで以下のように初期のパスワードが発行されるので保存しておきます。
2024-09-03T06:30:15.306122Z 1 [Note] A temporary password is generated for root@localhost: AyVCZ+whY9R(
ここで先ほどのbin/mysqldなどはこのディレクトリ以外からだとこのファイルのフルパスを打たないといけないため、とても面倒です。
どこからでもmysqlコマンドを使えるようにするため、パスを通します。
echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
普通にhomebrewでインストールする際は上のようなコマンドで問題ないのですが、今回はこれらがmysql-homeに作成されているため、以下のように変更する必要があります。
echo 'export PATH="/{mysql-homeがある場所までのパス}/mysql-home/bin:$PATH"' >> ~/.zprofile
設定を反映させる
source ~/.zprofile
mysql --versionで確認して、version情報を取得できれば完了です。
mysqlへのログイン
以下のコマンドでログイン
mysql -u root -p
passwordを求められますが、先ほど取得した初期パスワードを入力。
mysql>
となったら以下のコマンドを実行し、初期パスワードを任意のパスワードに変更してください。
SET PASSWORD = PASSWORD('pass');
最後に以下のコマンドでホストとユーザ情報を確認し、問題なく表示されれば完了です。
SELECT Host, User FROM mysql.user WHERE User = 'root';
+-----------+------+
| Host | User |
+-----------+------+
| localhost | root |
+-----------+------+
1 row in set (0.01 sec)
最後に
情報が少なく導入に苦労した。
古い技術を使用する上でのリスクを認識することができた。