Mac 通过 Homebrew 安装了 MySQL@8.0 版本后
~ mysql --version 1 ✘ │ 21:40:03
mysql Ver 8.0.40 for macos14.7 on arm64 (Homebrew)
发现无论怎么样,都无法启动 MySQL 或是连接 MySQL
// 连接失败
mysql -u mysql -p ✔ │ 21:38:14
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
// brew 启动失败
~ brew services start mysql@8.0
// mysqld_safe 启动失败
~ mysqld_safe --user=mysql ✔ │ 21:36:41
2025-01-19T13:38:13.6NZ mysqld_safe Logging to '/opt/homebrew/var/mysql/CNMACANCNN4FH09.err'.
2025-01-19T13:38:13.6NZ mysqld_safe Starting mysqld daemon with databases from /opt/homebrew/var/mysql
2025-01-19T13:38:14.6NZ mysqld_safe mysqld from pid file /opt/homebrew/var/mysql/CNMACANCNN4FH09.pid ended
// mysql.server 启动失败
∅ /usr/local mysql.server start 1 ✘ │ 5s │ 21:45:43
Starting MySQL
.. ERROR! The server quit without updating PID file (/opt/homebrew/var/mysql/CNMACANCNN4FH09.pid).
刚好看到在执行 mysqld_safe --user=mysql
的报错中有错误日志路径 /opt/homebrew/var/mysql/CNMACANCNN4FH09.err.。查看日志发现有这么行输出 2025-01-17T09:39:25.177457Z 1 [ERROR] [MY-014061] [InnoDB] Invalid MySQL server downgrade: Cannot downgrade from 90100 to 80040. Downgrade is only permitted between patch releases. mysqld: Can't open file: 'mysql.ibd' (errno: 0 - )
image.png
原来是之前电脑装过 MySQL9,卸载后重新安装MySQL8,但是旧的MySQL数据目录文件仍然存在,所以需要把 MySQL 数据目录清空
sudo rm -rf /opt/homebrew/var/mysql/*
清空后,重新初始化 MySQL 8.0 数据目录
mysqld --initialize --user=$(whoami) --basedir=$(brew --prefix mysql@8.0) --datadir=/opt/homebrew/var/mysql
再次启动 MySQL
mysql.server start
成功
/opt/homebrew/var │ master mysql.server start 1 ✘ │ 4s │ 21:50:43
Starting MySQL
.. SUCCESS!