Mac M系列芯片安装MySQL 5.7指南
Mac M系列芯片安装MySQL 5.7指南
背景
自2024年8月1日起,Homebrew已将MySQL 5.7标记为不再支持的版本,导致无法直接通过常规方式安装。本文档记录了在Mac M系列芯片上成功安装MySQL 5.7的完整过程。
安装步骤
1. 初始尝试
首先,尝试直接使用brew安装MySQL 5.7:
brew install mysql@5.7
此时会遇到错误:
Error: mysql@5.7 has been disabled because it is not supported upstream! It was disabled on 2024-08-01.
2. 绕过API安装限制
设置环境变量,强制Homebrew不使用API进行安装:
export HOMEBREW_NO_INSTALL_FROM_API=1
3. 强制使用本地formula
强制更新Homebrew核心仓库:
brew tap --force homebrew/core
这会克隆完整的Homebrew核心仓库到本地。
4. 编辑MySQL 5.7的formula
查看并编辑MySQL 5.7的formula文件:
brew edit mysql@5.7
此时会打开formula文件,需要找到并注释掉禁用MySQL 5.7的代码行:
# 找到这一行并注释掉
# disable! date: "2024-08-01", because: :unsupported
保存并退出编辑器。
5. 安装MySQL 5.7
尝试安装MySQL 5.7:
HOMEBREW_NO_INSTALL_FROM_API=1 brew install mysql@5.7
此时可能会遇到依赖问题,特别是openssl@1.1也被标记为不再支持:
Error: openssl@1.1 has been disabled because it is not supported upstream! It was disabled on 2024-10-24.
6. 安装openssl@1.1依赖
编辑并安装openssl@1.1:
brew edit openssl@1.1
同样,需要找到并注释掉禁用openssl@1.1的代码行:
# 找到这一行并注释掉
# disable! date: "2024-10-24", because: :unsupported
保存并退出编辑器,然后安装openssl@1.1:
HOMEBREW_NO_INSTALL_FROM_API=1 brew install openssl@1.1
7. 再次安装MySQL 5.7
完成依赖安装后,再次尝试安装MySQL 5.7:
HOMEBREW_NO_INSTALL_FROM_API=1 brew install mysql@5.7
此时应该能够成功安装MySQL 5.7及其所有依赖项。
配置MySQL
1. 将MySQL添加到PATH
将MySQL的bin目录添加到PATH环境变量:
echo 'export PATH="/opt/homebrew/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
2. 启动MySQL服务
使用brew services启动MySQL服务:
brew services start mysql@5.7
3. 安全配置
运行MySQL安全配置脚本:
mysql_secure_installation
按照提示完成以下配置:
- 设置root用户密码
- 删除匿名用户
- 决定是否允许root远程登录
- 删除测试数据库
- 重新加载权限表
4. 测试连接
测试MySQL连接:
mysql -uroot -p
输入之前设置的密码,如果能成功登录,则表示安装和配置已完成。
5. 配置MySQL允许远程访问
默认情况下,Homebrew安装的MySQL只允许本地连接(bind-address = 127.0.0.1
)。如果需要允许远程访问,请按照以下步骤操作:
编辑MySQL配置文件
vim /opt/homebrew/etc/my.cnf
修改或添加以下配置(允许所有IP访问)
# Default Homebrew MySQL server config
[mysqld]
# 注释掉这一行或修改为0.0.0.0以允许所有IP访问
# bind-address = 127.0.0.1
bind-address = 0.0.0.0
重启MySQL服务
brew services restart mysql@5.7
授予远程访问权限
# 登录MySQL
mysql -uroot -p
# 首先查看现有用户和主机
mysql> SELECT Host, User FROM mysql.user;
+-----------+---------------+
| Host | User |
+-----------+---------------+
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
# 在MySQL 5.7中创建允许远程连接的root用户
mysql> CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
# 或者创建一个专门用于远程连接的用户(更安全)
mysql> CREATE USER 'remote'@'%' IDENTIFIED BY '远程用户密码';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%';
# 刷新权限
mysql> FLUSH PRIVILEGES;
# 再次查看用户列表,确认远程用户已创建
mysql> SELECT Host, User FROM mysql.user;
+-----------+---------------+
| Host | User |
+-----------+---------------+
| % | remote |
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+---------------+
注意:MySQL 5.7中,应该先创建用户,再授权,而不是使用
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password';
这种写法。
确保防火墙允许MySQL端口(默认3306)
# 检查MySQL监听状态
sudo lsof -i:3306
测试远程连接
从另一台机器使用以下命令测试连接:
mysql -h 你的Mac的IP地址 -u用户名 -p密码 -P端口号
安全提示:允许远程访问会增加安全风险,建议:
- 使用强密码
- 只授予必要的权限
- 考虑使用SSH隧道或VPN
- 在防火墙层面限制允许连接的IP
6. 修改MySQL端口号(可选)
如果需要修改MySQL的默认端口号(3306),可以通过编辑配置文件实现:
- 对于Homebrew安装的MySQL 5.7,配置文件按以下顺序读取:
# 查看MySQL配置文件的搜索顺序
mysql --help | grep "Default options" -A 1
输出结果显示配置文件的搜索顺序为:
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /opt/homebrew/etc/my.cnf ~/.my.cnf
您可以选择编辑以下任一配置文件:
- 系统级配置:
/opt/homebrew/etc/my.cnf
(推荐,这是Homebrew安装的MySQL默认位置) - 用户级配置:
~/.my.cnf
(仅对当前用户生效)
如果配置文件不存在,可以创建它:
touch /opt/homebrew/etc/my.cnf
# 或者
touch ~/.my.cnf
- 在配置文件中添加以下内容(将3307替换为您想要的端口号):
[mysqld]
port=3307
- 重启MySQL服务使配置生效:
brew services restart mysql@5.7
- 验证端口修改是否成功:
mysql -uroot -p -P3307
或者查看MySQL当前使用的端口:
mysqladmin -uroot -p variables | grep port
注意事项
- 此方法是一种临时解决方案,随着Homebrew的更新可能会失效
- MySQL 5.7已经不再获得上游支持,建议在条件允许的情况下迁移到更新的版本
- 对于生产环境,建议考虑使用Docker容器或官方安装包
参考资料
- CSDN博客:Mac M系列芯片安装MySQL 5.7方法
- Homebrew官方文档