web-dev-qa-db-ja.com

MAMPのMySQLをMySQL 5.7にアップグレードすることは可能ですか?

MAMP MySQLライブラリを5.7にアップグレードすることは可能ですか?現在5.6を実行しています(MAMPのアップグレードスクリプトを使用してアップグレードしました)または、MySQLをシステムにネイティブにインストールする必要がありますか? (macOS 10.11 El Capitan)

誰かが私を正しい方向に向けることができたら…ありがとう!

8
harveyslash

MAMPをMysql 5.7にアップグレードする

#!/bin/sh

wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.10-osx10.10-x86_64.tar.gz
tar xfvz mysql-5.7*

echo "stopping mamp"
Sudo /Applications/MAMP/bin/stop.sh
Sudo killall httpd mysqld

echo "creating backup"
Sudo rsync -arv --progress /Applications/MAMP ~/Desktop/MAMP-Backup

echo "copy bin"
Sudo rsync -arv --progress mysql-5.7.*/bin/* /Applications/MAMP/Library/bin/ --exclude=mysqld_multi --exclude=mysqld_safe 

echo "copy share"
Sudo rsync -arv --progress mysql-5.7.*/share/* /Applications/MAMP/Library/share/

echo "fixing access (workaround)"
Sudo chmod -R o+rw  /Applications/MAMP/db/mysql/
Sudo chmod -R o+rw  /Applications/MAMP/tmp/mysql/
Sudo chmod -R o+rw  "/Library/Application Support/appsolute/MAMP PRO/db/mysql/"

echo "starting mamp"
Sudo /Applications/MAMP/bin/start.sh

echo "migrate to new version"
/Applications/MAMP/Library/bin/mysql_upgrade -u root --password=root -h 127.0.0.1
11
Jaya Konduru

[〜#〜] update [〜#〜]バージョン5.0のMAMPには、すでにインストーラーにMySQL 5.7が含まれています! コアMAMPセットアップをアップグレードするだけで、このように技術的な問題を回避する代わりに、MySQLを使用するように設定されます。

以下の回答は、それを必要とする人のための参照として残します。


ここでこの回答とコメント、およびGitHubの同様のリンクされたチュートリアルなどを読みましたが、いくつかのチュートリアルで混乱した点がいくつかありました。 chmod -O o+rwを設定する手順や、/tmp/mysql.sockへのシンボリックリンクの作成に関するコメントなど。 MAMPをそのまま使用する必要があり、そのような変更を必要としないのに、なぜそれが必要なのですか?ここで、MySQLをMac OS 10.3.4(High Sierra)でMAMP 4.4.1にアップグレードした経験に基づいてまとめた手順を示します。

最初に、MySQL 5.7のmacOSバイナリのコピーを取得します。私がこの回答を投稿した時点では、MySQL 5.7.22が現在のバージョンなので、このURLを使用したい新しいバージョンに調整してください。

curl -OL https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-macos10.13-x86_64.tar.gz

次のように解凍します。

tar xfvz mysql-5.7*

次のように、bin/share/のものをRsync経由でMAMPにコピーします。

Sudo rsync -arv --progress mysql-5.7.*/bin/* /Applications/MAMP/Library/bin/ --exclude=mysqld_multi --exclude=mysqld_safe
Sudo rsync -arv --progress mysql-5.7.*/share/* /Applications/MAMP/Library/share/

このように既存のMySQL 5.6データベースディレクトリをコピーします。 mysql56ディレクトリはアップグレード中に一時的に必要になりますが、MySQL 5.7の残りのアップグレードが完了した後で破棄できることに注意してください。

Sudo cp -r /Applications/MAMP/db/mysql56 /Applications/MAMP/db/mysql57

それが完了したら、アップグレードのために、次のようなMySQLデータベース固有のバイナリを削除します。

Sudo rm -rf /Applications/MAMP/db/mysql57/mysql/innodb_*
Sudo rm -rf /Applications/MAMP/db/mysql57/mysql/slave_*

そして、パーミッションをo+rwに変更する代わりに、DBディレクトリの所有者を現在のユーザーに変更するだけです。これは、MAMPがこれをインストールする方法と一致します。

Sudo chown -R ${USER}:admin /Applications/MAMP/db/mysql57

次に、このSedコマンドを実行して、mysqld_safeスクリプトを調整して新しいMySQL 5.7パスを指すようにします。おそらく、このファイルをテキストエディターで開いて、mysql56のすべてのインスタンスをmysql57に変更することもできます。

sed -i.bak 's/mysql56/mysql57/g' /Applications/MAMP/Library/bin/mysqld_safe

最後に、MAMPを使用してmy.cnfファイルを設定する場合は、/Applications/MAMP/conf/my.cnfに設定する必要があります。ただし、このアップグレードを実行すると、MAMPのmy.cnfのデフォルトの検索パスは、期待される/usr/local/mysql/etc/ではなく/Applications/MAMP/conf/になります。設定されます。明らかに、この時点ではMySQLを再コンパイルしないので、MAMPセットアップを再び真にポータブルにするために実行する最もクリーンで簡単なことは、startMysql.shのこの行を次のように変更することです。

/Applications/MAMP/Library/bin/mysqld_safe --port=8889 --socket=/Applications/MAMP/tmp/mysql/mysql.sock --pid-file=/Applications/MAMP/tmp/mysql/mysql.pid --log-error=/Applications/MAMP/logs/mysql_error_log &

これに;すべてのotgerの前に--defaults-extra-file=オプションを追加していることに注意してください。

/Applications/MAMP/Library/bin/mysqld_safe --defaults-extra-file=/Applications/MAMP/conf/my.cnf --port=8889 --socket=/Applications/MAMP/tmp/mysql/mysql.sock --pid-file=/Applications/MAMP/tmp/mysql/mysql.pid --log-error=/Applications/MAMP/logs/mysql_error_log &

すべてのコマンドライン作業が完了したら、アプリケーションを介してMAMPを起動し、MySQLサーバーとApacheサーバーを起動してから、コマンドを実行してデータベースをアップグレードします。

/Applications/MAMP/Library/bin/mysql_upgrade --user=root --password=root --port=3306 --socket=/Applications/MAMP/tmp/mysql/mysql.sock --force

そして最後にこのコマンドを実行して、mysql.sockパスではなく、/tmp/mysql.sockをMAMPパスに適切に設定します。

/Applications/MAMP/Library/bin/mysql_config_editor --verbose set --socket=/Applications/MAMP/tmp/mysql/mysql.sock

これがすべて完了し、MySQLが期待どおりに実行されていることを確認したら、次のように古いMySQL 5.6ディレクトリを破棄します。

Sudo rm -rf /Applications/MAMP/db/mysql56

以上の作業がすべて完了したら、MAMP 4.4.1でMySQL 5.7を正しく使用するように設定する必要があります。

7
JakeGould

JakeGouldの優れたトレーニングで説明されているMySQL 5.7.22へのアップグレードで問題が発生しました。

更新手順は、MySQL 5.7.18を搭載したEl Capitanでうまく機能しました。

この手順の更新されたbashスクリプトを作成しました。

#!/bin/sh

curl -OL https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18-macos10.12-x86_64.tar.gz
tar xfvz mysql-5.7*

echo "Stopping MAMP"

Sudo /Applications/MAMP/bin/stop.sh

Sudo killall httpd mysqld

echo "Copy Bin"

Sudo rsync -arv --progress mysql-5.7.*/bin/* /Applications/MAMP/Library/bin/ --exclude=mysqld_multi --exclude=mysqld_safe

echo "Copy Share"

Sudo rsync -arv --progress mysql-5.7.*/share/* /Applications/MAMP/Library/share/

echo "Building Mysql 5.7 Folder"

Sudo cp -r /Applications/MAMP/db/mysql56 /Applications/MAMP/db/mysql57

Sudo rm -rf /Applications/MAMP/db/mysql57/mysql/innodb_*

Sudo rm -rf /Applications/MAMP/db/mysql57/mysql/slave_*

Sudo chown -R ${USER}:admin /Applications/MAMP/db/mysql57

sed -i.bak 's/mysql56/mysql57/g' /Applications/MAMP/Library/bin/mysqld_safe

echo "Finally, if you use MAMP and set a my.cnf file, that should be set in /Applications/MAMP/conf/my.cnf… But by doing this upgrade, the default search path of the my.cnf in MAMP will be /usr/local/mysql/etc/ instead of the expected /Applications/MAMP/conf/ since that is where the new binary expects it to be set. Clearly we’re not going to recompile MySQL at this point so the cleanest/simplest thing to do to make your MAMP setup truly portable again is to change this line in the startMysql.sh from this:
/Applications/MAMP/Library/bin/mysqld_safe --port=8889 --socket=/Applications/MAMP/tmp/mysql/mysql.sock --pid-file=/Applications/MAMP/tmp/mysql/mysql.pid --log-error=/Applications/MAMP/logs/mysql_error_log &
To this; note we are adding the --defaults-extra-file= option before all the otgers:
/Applications/MAMP/Library/bin/mysqld_safe --defaults-extra-file=/Applications/MAMP/conf/my.cnf --port=8889 --socket=/Applications/MAMP/tmp/mysql/mysql.sock --pid-file=/Applications/MAMP/tmp/mysql/mysql.pid --log-error=/Applications/MAMP/logs/mysql_error_log &"

read -p "With all of that command line work done, launch MAMP via the application, start the MySQL and Apache servers."

read -p "Press [Enter] key to start migration..."

echo "Starting MySQL"

/Applications/MAMP/Library/bin/mysql_upgrade --user=root --password=root --port=3306 --socket=/Applications/MAMP/tmp/mysql/mysql.sock --force

echo "Migrate, finaly, to new version"

/Applications/MAMP/Library/bin/mysql_config_editor --verbose set --socket=/Applications/MAMP/tmp/mysql/mysql.sock
1
Erik Beugelaar