Mac M2 Pro安装MySQL 8.4.3
絮絮叨叨
- MacBook Pro,芯片:Apple M2 Pro, macOS: Sonoma 14.0
- 一直知道很多软件对Mac M1或M2的支持不好,但没想到在安装MySQL 8.x上也让我吃尽了苦头
- 本文除了介绍如何安装MySQL 8.4.3外,还会记录笔者遇到的一些问题以及解决方法
MySQL 8.4.3的安装
下载.dmg的安装包
- 下载地址:https://dev.mysql.com/downloads/mysql/
- 选择8.4.3 LTS版本的.dmg安装包
图形化界面安装
- 由于笔者忘记截图了,这里推荐参考文档:Macbook M2配置MySQL 8.x记录。
- 注意:记住安装时,输入的密码!!! 笔者偷懒,直接是
12345678
😂 - 安装结束后,在
系统设置
最底部就能看到MySQL服务,绿色小圆点表示服务运行中
配置系统环境变量
-
这时候,还不能通过
mysql -uroot -p
这样的命令登录MySQL,还需要配置一下系统环境变量vim ~/.zshrc
-
在文件尾部加入以下内容,
/usr/local/mysql
是对应的默认安装目录export PATH=$PATH:/usr/local/mysql/bin export PATH=$PATH:/usr/local/mysql/support-files
-
让环境变量生效
source ~/.zshrc
-
通过
mysql -V
验证环境变量是否生效,如果生效会显示MySQL的版本信息
-
这时候MySQL服务基本上就已经安装完成了
笔者遇到的一些问题记录
环境变量不生效
-
如果
mysql -V
无法执行,一般都是环境变量配置有问题 -
可以通过
echo $PATH
,查看MySQL的环境变量是否正确加载
-
首先,检查安装路径是否正确,也就是
/usr/local/mysql
这个路径是否正确
-
笔者是安装路径没有问题,但是自己鬼使神差地通过
echo
写入,导致上述配置到了整个$PATH
之后
登录失败
-
使用如下方式登录MySQL均失败
mysql -u root -p mysql -h 127.0.0.1 -u root -p
-
报错如下:
-
可能是服务未启动
-
使用如下命令可以查看MySQL服务的状态,启动、停止、重启MySQL服务。参考文档:MAC MySql 安装(详细步骤)
# 查看MySQL服务状态 sudo mysql.server status # 开启MySQL服务(需要输入电脑密码,不是数据库登录密码) sudo mysql.server start # 停止MySQL服务 sudo mysql.server stop # 重启MySQL服务 sudo mysql.server restart
使用mysql-native-passwod插件进行用户认证
-
从MySQL 8.0 开始,将默认密码认证插件从
mysql-native-password
调整为caching_sha2_password
,感兴趣的可以看这篇文章:从源码分析 MySQL 身份验证插件的实现细节 -
由于工作需要,本地部署的MySQL服务对root用户应该使用
mysql-native-password
插件进行认证 -
由于使用默认的
caching_sha2_password
插件,通过程序访问MySQL报错MySQL 8.0 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
-
这时需要配置
/my.cnf
文件。首先,执行如下命令,查看/my.cnf
文件的地址mysql --help | grep -A 1 "Default options"
-
笔者选择在
/usr/local/mysql/etc
目录下创建my.cnf
文件,注意:/usr/local/
目录的更新,一般都需要使用sudo
-
添加如下内容:
[mysqld] port=3306 bind-address=0.0.0.0 mysql_native_password=ON # 开启mysql_native_password插件
-
创建好后,重启MySQL服务。命令行登录MySQL后,执行如下SQL
USE mysql; SELECT user, host, plugin FROM user;
-
这时,自建用户(如
root
用户)的认证方式将变成mysql_native_password
-
感谢文档:mysql_native_password DISABLED,这次一向很好用的stackoverflow和 chatGPT 竟然都没帮上我