Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将MAMP中的MySQL升级到MySQL 5.7?_Mysql_Macos_Mamp - Fatal编程技术网

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

是否可以将MAMP中的MySQL升级到MySQL 5.7?,mysql,macos,mamp,Mysql,Macos,Mamp,是否可以将MAMP MySQL库升级到5.7? 我目前正在运行5.6(我使用MAMP的升级脚本升级到了5.6) ) 或者我需要在我的系统上以本机方式安装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

是否可以将MAMP MySQL库升级到5.7? 我目前正在运行5.6(我使用MAMP的升级脚本升级到了5.6) ) 或者我需要在我的系统上以本机方式安装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
更新:只需升级您的核心MAMP设置,您就可以使用MySQL,而不必像这样跳过技术障碍

留下下面的答案作为任何需要它的人的参考。


虽然我在这里阅读了这些答案和评论,以及GitHub上的一些类似链接教程,但在一些教程中有一些东西让我感到困惑。例如设置
chmod-oo+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
按如下方式解压缩:

tar xfvz mysql-5.7*
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/
sudo rm -rf /Applications/MAMP/db/mysql56
通过Rsync将
bin/
share/
内容复制到MAMP中,如下所示:

tar xfvz mysql-5.7*
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/
sudo rm -rf /Applications/MAMP/db/mysql56
像这样复制您现有的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\u 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
最后运行此命令,以正确设置MAMP路径的
mysql.sock
,而不是
/tmp/mysql.sock
路径:

/Applications/MAMP/Library/bin/mysql_config_editor --verbose set --socket=/Applications/MAMP/tmp/mysql/mysql.sock
当所有这些都完成后,您确认MySQL正在按预期运行,只需像下面这样扔掉旧的MySQL 5.6目录:

tar xfvz mysql-5.7*
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/
sudo rm -rf /Applications/MAMP/db/mysql56

完成所有这些工作后,您都应该设置为在MAMP 4.4.1下干净地使用MySQL 5.7。

我在升级到MySQL 5.7.22时遇到了问题,如中所述

更新后的程序在El Capitan和MySQL 5.7.18上运行良好

我已经为此过程编写了更新的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

运行正常但出现错误:无法通过套接字“/tmp/MySQL.sock”连接到本地MySQL服务器,因此我刚刚安装了最新版本的MAMP,该版本具有5.6.35和utf8mb4。移动on@i_a我必须添加一个符号链接来修复这个问题:
sudo ln-s/Applications/MAMP/tmp/mysql/mysql.sock/tmp/mysql.sock
2017年我必须触摸/Applications/MAMP/logs/mysql\u error\u log.errUpdate,使用此URL查找特定操作系统版本的最新MySQL的下载路径:@deweydb虽然该符号链接在技术上可能有效,但它不是必需的。这就解释了如何干净地让MAMP使用它自己的/Applications/MAMP/tmp/mysql.sock`路径,而不必这样做。我可以确认,在OS X(10.13.6)高版本的MAMP Pro 3.5.2中,这对我来说是有效的。唯一的区别是
~/Applications/MAMP/db/
中的mysql 5.6目录名为
mysql
,我现在有了
mysql57