前言
在Mac版本: 12.2.1 下希望能装个Mysql8 (8.0.28),结果安装的时候报错:
2022-03-13T07:59:03.687991Z 0 [ERROR] [MY-000077] [Server] /usr/local/Cellar/mysql/8.0.28_1/bin/mysqld: Error while setting value 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' to 'sql_mode'.
2022-03-13T08:10:34.238494Z 0 [System] [MY-013169] [Server] /usr/local/Cellar/mysql/8.0.28_1/bin/mysqld (mysqld 8.0.28) initializing of server in progress as process 28833
2022-03-13T08:10:34.245359Z 0 [ERROR] [MY-010457] [Server] --initialize specified but the data directory has files in it. Aborting.
2022-03-13T08:10:34.245368Z 0 [ERROR] [MY-013236] [Server] The designated data directory /usr/local/var/mysql/ is unusable. You can remove all files that the server added to it.
2022-03-13T08:10:34.245442Z 0 [ERROR] [MY-010119] [Server] Aborting
2022-03-13T08:10:34.249426Z 0 [System] [MY-010910] [Server] /usr/local/Cellar/mysql/8.0.28_1/bin/mysqld: Shutdown complete (mysqld 8.0.28) Homebrew.
Warning: The post-install step did not complete successfully
直接启动也无法连接
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
分析
定位错误信息:
Error while setting value 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' to 'sql_mode'.
明显是 Mysql 问题,需要手动设置 sql_mode
,那么通过 homebrew
安装的 Mysql
配置文件在哪呢?
/usr/local/etc/my.cnf
所以只需要修改下这个文件里面的 sql_mode
即可:
去除掉 NO_AUTO_CREATE_USER 即可
sql_mode ="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
删除 NO_AUTO_CREATE_USER
完成之后执行下面的指令来重新初始化 Mysql 即可
rm -rf /usr/local/var/mysq
brew postinstall mysql
最后启动服务
brew services restart mysql
连接 Mysql
mysql -uroot