Homebrew安装MySQL 8.0后版本不一致问题求助
你用brew install mysql安装的是MySQL 8.0客户端,但后台仍在运行MySQL 5.7的服务器进程——这就是核心问题:不管你用哪个版本的客户端连接,都会连到旧服务器上。basedir显示的路径是之前安装5.7时留下的配置残留,哪怕目录已删除,旧服务进程仍在持续运行。
第一步:检查当前运行的MySQL进程
执行命令查看所有MySQL相关进程:ps aux | grep mysql观察输出中的进程路径,若出现
mysql@5.7相关内容,即可确认旧服务器仍在运行。第二步:停止所有MySQL服务
先尝试用brew停止服务:brew services stop mysql brew services stop mysql@5.7若brew提示服务不存在,直接杀死进程:找到第一步输出中MySQL进程的PID(第二列的数字),执行:
sudo kill -9 [PID]把所有带mysql的进程全部终止。
第三步:清理brew残留的MySQL包
检查是否还有mysql@5.7的包残留:brew list | grep mysql若输出包含
mysql@5.7,执行卸载:brew uninstall mysql@5.7随后清理brew缓存和残留文件:
brew cleanup mysql brew cleanup mysql@5.7第四步:检查并清理旧配置文件
查看系统中是否存在指向旧版本的配置文件:ls -la /etc/my.cnf /usr/local/etc/my.cnf ~/.my.cnf若找到这些文件,打开检查
basedir、datadir配置项,将指向5.7的路径替换为8.0的路径(/usr/local/Cellar/mysql/8.0.32/);或者备份后直接删除旧配置文件。第五步:重启MySQL 8.0服务并验证
启动8.0版本的服务:brew services start mysql连接客户端验证:
mysql -u root此时服务器版本应显示为
8.0.32,再执行SQL命令确认路径:SHOW VARIABLES WHERE Variable_name = 'basedir';结果应指向
/usr/local/Cellar/mysql/8.0.32/。第六步:验证8.0语法支持
执行MySQL 8.0特有语法(如窗口函数)测试:SELECT ROW_NUMBER() OVER () AS row_num FROM dual;若能正常执行,说明服务器版本已切换成功。
内容的提问来源于stack exchange,提问作者eComEvo

