是否可以将MAMP中的MySQL升级到MySQL 5.7?

har*_*ash 8 mysql macos mamp

是否可以将MAMP MySQL库升级到5.7?我目前正在运行5.6(我升级到使用MAMP的升级脚本)或者我是否需要在我的系统上本机安装MySQL?(macOS 10.11 El Capitan)

如果有人能指出我正确的方向......谢谢!

小智 11

将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
Run Code Online (Sandbox Code Playgroud)


Jak*_*uld 7

更新:MAMP 5.0版现在已经在安装程序中包含了MySQL 5.7!只需升级您的核心MAMP设置,您就可以使用MySQL,而不必像这样跳过技术箍.

留下以下答案作为任何需要它的人的参考.


虽然我在这里阅读了这些答案和评论 - 以及GitHub上的一些类似的链接教程等等 - 在一些教程中有一些让我感到困惑的事情.例如设置指令chmod -O o+rw甚至是关于创建符号链接的评论/tmp/mysql.sock; 当开箱即用的MAMP应该是自包含而不需要这样的改变时,为什么呢?所以这里是根据我在Mac OS 10.3.4(High Sierra)上为MAMP 4.4.1升级MySQL的经验而编写的说明.

首先,获取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
Run Code Online (Sandbox Code Playgroud)

像这样解压缩它:

tar xfvz mysql-5.7*
Run Code Online (Sandbox Code Playgroud)

通过Rsync 将这些bin/share/东西复制到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/
Run Code Online (Sandbox Code Playgroud)

像这样复制现有的MySQL 5.6数据库目录; 请注意,mysql56在升级过程中暂时需要该目录,但在完成MySQL 5.7升级的其余部分后可以将其丢弃:

sudo cp -r /Applications/MAMP/db/mysql56 /Applications/MAMP/db/mysql57
Run Code Online (Sandbox Code Playgroud)

完成后,删除像这样的MySQL数据库特定二进制文件进行升级:

sudo rm -rf /Applications/MAMP/db/mysql57/mysql/innodb_*
sudo rm -rf /Applications/MAMP/db/mysql57/mysql/slave_*
Run Code Online (Sandbox Code Playgroud)

而不是更改权限o+rw只是将DB目录的所有者更改为当前用户; 这符合MAMP如何安装这些东西:

sudo chown -R ${USER}:admin /Applications/MAMP/db/mysql57
Run Code Online (Sandbox Code Playgroud)

现在运行此Sed命令来调整mysqld_safe脚本以指向新的MySQL 5.7路径; 您可以在文本编辑器中打开此文件并更改mysql56to的所有实例mysql57:

sed -i.bak 's/mysql56/mysql57/g' /Applications/MAMP/Library/bin/mysqld_safe
Run Code Online (Sandbox Code Playgroud)

最后,如果你使用甲基苯丙胺并设置my.cnf文件,应在设置/Applications/MAMP/conf/my.cnf...但是,这样做升级,默认的搜索路径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 &
Run Code Online (Sandbox Code Playgroud)

对此; 请注意我们--defaults-extra-file=在所有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 &
Run Code Online (Sandbox Code Playgroud)

完成所有命令行工作后,通过应用程序启动MAMP,启动MySQL和Apache服务器,然后回退到命令,就像运行此命令来升级数据库:

/Applications/MAMP/Library/bin/mysql_upgrade --user=root --password=root --port=3306 --socket=/Applications/MAMP/tmp/mysql/mysql.sock --force
Run Code Online (Sandbox Code Playgroud)

最后运行此命令以获取mysql.sock正确设置MAMP路径而不是该/tmp/mysql.sock路径:

/Applications/MAMP/Library/bin/mysql_config_editor --verbose set --socket=/Applications/MAMP/tmp/mysql/mysql.sock
Run Code Online (Sandbox Code Playgroud)

完成所有操作后,您已确认MySQL正在按预期运行,只需抛出旧的MySQL 5.6目录,如下所示:

sudo rm -rf /Applications/MAMP/db/mysql56
Run Code Online (Sandbox Code Playgroud)

完成所有这些工作后,您应该在MAMP 4.4.1下完全使用MySQL 5.7.