macOS Mojave 降级安装 MySQL 5.7

2018-12-18 16:50:53 +08:00
 wsgzao

前言

自从 macOS 升级至 Mojave 后小问题不断,现在使用 Homebrew 安装 MySQL 默认也是 8.0 版本,和 Python 类似我们依赖的组件可能还不支持高版本,新版本的某些更新和调整导致比如 Sequel Pro 和 mysqldb 不可用。当然我们也可以使用官方的 MySQLWorkbench,之前介绍了如何在 macOS 下安装多版本 Python,现在继续分享 macOS 如何降级 MySQL。

macOS Mojave 降级安装 MySQL 5.7

更新历史

2018 年 12 月 17 日 - 初稿

阅读原文 - https://wsgzao.github.io/post/3proxy/

扩展阅读

Install MySQL 5.7 on macOS Mojave - https://medium.com/@at0dd/install-mysql-5-7-on-mac-os-mojave-cd07ec936034


正常安装

默认新版本是 MySQL 8.0

brew update
brew install mysql

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
To have launchd start mysql now and restart at login:
  brew services start mysql
Or, if you don't want/need a background service you can just run:
  mysql.server start

卸载现有版本

无论是官方 dmg 还是 brew 都记得先备份重要数据后再清理

# 正常关闭并删除 MySQL
mysql.server stop
brew services stop mysql
brew remove mysql

# 无法正常删除 MySQL
ps -ax | grep mysql
stop and kill any MySQL processes
brew remove mysql
brew cleanup
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/var/mysql
sudo rm -rf /usr/local/mysql*

安装 MySQL 指定版本

# 安装 MySQL 5.7
brew install mysql@5.7
brew link --force 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 /usr/local,
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="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc

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

For pkg-config to find mysql@5.7 you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/mysql@5.7/lib/pkgconfig"


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:
  /usr/local/opt/mysql@5.7/bin/mysql.server start

# 开机自启动
brew services restart mysql@5.7
# 设置环境变量
echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
# 手动启动和关闭
/usr/local/opt/mysql@5.7/bin/mysql.server start
/usr/local/opt/mysql@5.7/bin/mysql.server stop

安装 mysqldb

Python 中最连接 Mysql 常用的驱动是:

# 使用 MySQLdb,但是提示 importerror no module named mysqldb
brew install mysql-connector-c
pip install mysql-python

# 可能会出现以下错误,按照提示做即可
Error: Cannot install mysql because conflicting formulae are installed.
  mysql-connector-c: because both install MySQL client libraries

Please `brew unlink mysql-connector-c` before continuing.

Unlinking removes a formula's symlinks from /usr/local. You can
link the formula again after the install finishes. You can --force this
install, but the build may fail or cause obscure side-effects in the
resulting software.

4320 次点击
所在节点    MySQL
7 条回复
good
2018-12-18 17:13:19 +08:00
为啥不用 docker 装?
wsgzao
2018-12-18 17:16:42 +08:00
@good #1 这是一个好主意
wizardoz
2018-12-18 17:19:40 +08:00
macOS 的 docker 安装 mysql 5.7 也有 BUG,读写的时候会卡死好长时间。
good
2018-12-18 17:33:34 +08:00
@wizardoz #3 确实有问题 插大量的数据后 Sequel Pro 就连不上了,重新生成 mysql 容器也不行,只能重启电脑才能连
Everyxin
2018-12-18 17:34:41 +08:00
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=你的密码 -d mysql:5.7
一行解决
mingyun
2018-12-18 22:39:40 +08:00
@Everyxin 这么 6
rim99
2018-12-21 22:57:26 +08:00
我们的项目开发调试的时候就用 docker 跑 MySQL,没见着卡啊
@wizardoz
@good

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/518679

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX