如何使用 Homebrew 在 macOS BigSur (Apple Silicon) 上安装和启动 MySQL 5.7?

我需要使用 M1 在我的 MacBook 上安装特定版本的 MySQL (5.7)。

我正在尝试使用 Homebrew 来做到这一点。

brew install mysql@5.7

输出:

We've installed your MySQL database without a root password. To secure it run:
    mysql_secure_installation

MySQL is configured to only allow connections from localhost by default

To connect run:
    mysql -uroot

mysql@5.7 is keg-only, which means it was not symlinked into /opt/homebrew, because this is an alternate version of another formula.

If you need to have mysql@5.7 first in your PATH, run:   echo 'export PATH="/opt/homebrew/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc

For compilers to find mysql@5.7 you may need to set:   export LDFLAGS="-L/opt/homebrew/opt/mysql@5.7/lib"   export CPPFLAGS="-I/opt/homebrew/opt/mysql@5.7/include"

To have launchd start mysql@5.7 now and restart at login:   brew services start mysql@5.7 Or, if you don't want/need a background service you can just run:   /opt/homebrew/opt/mysql@5.7/bin/mysql.server start

在那之后,我尝试运行:

echo 'export PATH="/opt/homebrew/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
source .zshrc
mysql_secure_installation

并得到错误:

Securing the MySQL server deployment.
Enter password for user root: 
Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

另外,我试过: brew services start mysql@5.7

并且还得到错误:

Error: Permission denied @ rb_sysopen - /Users/vivanc/Library/LaunchAgents/homebrew.mxcl.mysql@5.7.plist

似乎存在与权限相关的问题。任何建议表示赞赏。

stack overflow How to install and start MySQL 5.7 on macOS BigSur (Apple Silicon) with Homebrew?
原文答案

答案:

作者头像

如果您遇到诸如“ Can't connect to local MySQL server through socket '/tmp/mysql.sock' ”或“ The post-install step did not complete successfully MySQL ”之类的问题,并且您之前安装了以前版本的 mysql(例如 8.x),那么您可能已经到了需要清理所有内容的地步在重新安装首选版本的 mysql@x.x 之前。

如果您已经访问了这些链接: Uninstall all those broken versions of MySQL and re-install it with Brew on Mac Mavericks (Coderwall) + Install MySQL 5.7 on macOS using Homebrew (github) 并且您在启动 mysql-service 时仍然遇到问题,您应该尝试同时删除 /opt/homebrew/etc/my.cnf 文件。

也将其与所有相关文件一起删除! M1 Apple Silcion 机器总结,通过 brew uninstall mysqlbrew uninstall mysql@x.x 卸载后,请删除:

/opt/homebrew/var/mysql
/opt/homebrew/etc/my.cnf

在此之后,一切都像全新安装一样(对我而言)。希望这节省了某人的时间。

作者头像

经过数小时的搜索,我解决了这个问题,这是因为我没有清理我之前安装的 MySQL 8.X 的所有内容。我关注了 this ,当我意识到那里没有大部分文件夹时,我产生了怀疑。然后我在我的计算机上搜索了所有名为 mysql 的文件夹,并在 mysql 中找到了一个 opt/homebrew/var 文件夹。删除它后,重新安装 MySQL 5.7,并启动服务器,一切都按预期工作。

作者头像

虽然这个问题是特定于Apple Silicon和MySQL 5.7的,我将在此答案中解决这个问题,但我想从添加一些通用说明来节省其他时间:

Homebrew为Intel和Apple Silicon提供了MySQL 5.7。 https://formulae.brew.sh/formula/mysql@5.7

Homebrew为Intel芯片支持MySQL 5.6,但不支持Apple Silicon: https://formulae.brew.sh/formula/mysql@5.6

如果您在苹果硅上需要5.6,那么最好使用5.7解决,因为最终需要升级生产,并且差异并不大。

在我的情况下,我最初做了 brew install mysql ,它给了我最新的MySQL(当前8.0)。当我尝试重新浏览它并进行 brew install mysql@5.6 时,当然,由于不受M1 Max(Apple Silicon)的支持,这当然不起作用。我遇到了问题,然后尝试 brew install mysql@5.7 工作。我遵循了一些指南,提到了各种建议。使用了一段时间后,似乎一次运行两个版本的MySQL会破坏您的MySQL文件,并使其很难使用并混淆自制。

我遇到了这些指南:
brew install mysql on macOS
https://coderwall.com/p/os6woq/uninstall-all-those-broken-versions-of-mysql-and-re-install-it-with-brew-on-mac-mavericks
https://www.codegrepper.com/code-examples/shell/brew+uninstall+mysql

在进一步阅读之前,请注意,在我的情况下,我有一个可满足整个本地MySQL数据库需求的ZIP,并且可能有可能破坏我所拥有的。

警告!进一步阅读并粗略地执行这些命令可能会删除您的MySQL存储。确保您有备份。

brew remove mysql 是一个很好的命令,可以摆脱我的最新安装。我也需要 brew remove mysql@5.7 ,即使这是我要安装的版本,但是它们彼此踩到...

brew cleanup 很好,我注意到它释放了一些锁定文件。

我不记得有任何运气: launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist ,但是您可以尝试。

rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist 为我工作。但是请注意,您的5.7设置还将有另一个文件。我建议: cd ~/Library/LaunchAgents/ ,然后环顾四周,看看您是否有任何mysql*。然后,如果您这样做,例如 homebrew.mxcl.mysql@5.7.plist ,请删除它。

这些对我有用:

sudo rm -rf /usr/local/var/mysql
rm /usr/local/etc/my.cnf
rm /usr/local/etc/my.cnf.default

还:

cd opt/homebrew/var

然后,如果您注意到其中一个MySQL目录,请将其删除。

您可能有Docker或其他类似的东西也运行MySQL或MySQLD。
ps -ax | grep "[m]ysql"
(请注意,上面的括号和引号是为了防止GREP出现在过程列表中,并与Lazier版本不同: ps -ax | grep mysql ,它将给人留下深刻的印象。

准备就绪后,请运行: brew services list 双检查您没有MySQL。然后仔细检查您没有运行任何MySQL进程:
ps -ax | grep "[m]ysql" 例如,如果输入 mysqld 例如。...过程列表。

最后,您应该准备好进行新的安装。新的安装过程应该相当直接:

brew services stop mysql

然后运行 brew services stop mysql@5.7 以确保您的安装正常工作。如果您看到它是绿色的,并且“开始”,那么您的安装就成功了!

您还应该运行: ```
brew install mysql@5.7
brew link --force mysql@5.7
brew services start mysql@5.7


安装后,您可能还会遇到MySQL模式问题。  `brew services list` ,您应该找到一个my.cnf文件。使用VIM或NANO进行编辑。您应该看到类似的东西:

 `mysql_secure_installation` 

编辑并设置MySQL模式。例如,我不想要NO_ZERO_IN_DATE模式,所以我使用:

 `cd /opt/homebrew/etc` 

然后像这样重新启动mysql:

Default Homebrew MySQL server config

[mysqld]

Only allow connections from localhost

bind-address = 127.0.0.1


然后仔细检查您仍然具有绿色状态“开始”:

Default Homebrew MySQL server config

[mysqld]

Only allow connections from localhost

bind-address = 127.0.0.1
sql-mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"


如果这样做,则应该禁用NO_ZERO_IN_DATE模式。
您可以通过查询进行测试:
 `brew services restart mysql@5.7` 

现在,您应该在Apple Silicon上运行MySQL 5.7并具有SQL_MODE集。

如果您遇到更多故障排除,请尽力进入已知状态,例如卸载,进行新的安装或已经安装了某些版本,等等。
作者头像

好像我找到了解决方案(或解决方法)。

使用 Homebrew 安装 MySQL 5.7 后,只需运行:

mysql.server start

MySQL 已启动,然后您可以运行 mysql_secure_installationmysql 命令。

作者头像

在设置我的 Apple M1 Macbook Pro 时,我遇到了以下错误消息的问题:

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

我的修复是修改 MySQL 配置文件:

nano /usr/local/etc/my.cnf

附加以下行:

tmpdir=/tmp
user=root

然后运行:

brew services restart mysql@5.7

这解决了我的问题,然后我能够成功连接到我的数据库客户端。

作者头像

我收到了这个警告:

You should change the ownership of these directories to your user.
  sudo chown -R $(whoami) /usr/local/share/doc /usr/local/share/man /usr/local/share/man/man1

And make sure that your user has write permission.
  chmod u+w /usr/local/share/doc /usr/local/share/man /usr/local/share/man/man1

我运行这两个命令然后它工作。

相关问题