MAMP MySQLライブラリを5.7にアップグレードすることは可能ですか?現在5.6を実行しています(MAMPのアップグレードスクリプトを使用してアップグレードしました)または、MySQLをシステムにネイティブにインストールする必要がありますか? (macOS 10.11 El Capitan)
誰かが私を正しい方向に向けることができたら…ありがとう!
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
[〜#〜] 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を正しく使用するように設定する必要があります。
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