macos big sur brew 安装Mysql 5.7 后无法启动问题修复

  |   0 评论   |   3,539 浏览

第一遍:
很久没有更新brew了.直接运行

brew install mysql@5.7

很快就能安装好. 但是好安装好后不能运行.具体表现为运行命令:mysql -uroot 会提示:

mysql -uroot
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

原来其安装后,需要运行服务才行. 这个在安装完成后实际有一个提示:

To restart mysql@5.7 after an upgrade:
  brew services restart mysql@5.7
Or, if you don't want/need a background service you can just run:
  /usr/local/opt/mysql@5.7/bin/mysqld_safe --datadir=/usr/local/var/mysql

第一遍安装完成时,并没有执行这个. 此时补上此命令执行. 然后问题依旧.

这个时候可以使用命令:brew services info mysql@5.7 来查看服务的状态.

brew services info  mysql@5.7
mysql@5.7 (homebrew.mxcl.mysql@5.7)
Running: ✘
Loaded: ✔
Schedulable: ✘

这个时候可以看到实际mysql并没有启动成功.

这个时候想查到了: https://stackoverflow.com/questions/15450091/error-2002-hy000-cant-connect-to-local-mysql-server-through-socket-tmp-mys

有提示说再安装一遍吧 ,有可能时我的brew的确太老了. 此时重新安装.先卸载.

# 卸载
brew uninstall  mysql@5.7
# 更新:
brew update
# 重新安装
brew install mysql@5.7

此时我的系统在更新后,被brew标记为不被支持的操作系统版本. 这个时候, 也能安装. 但是所有安装都变成了源码安装. 非常慢.大概持续了1小时.

brew install mysql@5.7
Warning: You are using macOS 11.
We (and Apple) do not provide support for this old version.
It is expected behaviour that some formulae will fail to build in this old version.
It is expected behaviour that Homebrew will be buggy and slow.
Do not create any issues about this on Homebrew's GitHub repositories.
Do not create any issues even if you think this message is unrelated.
Any opened issues will be immediately closed without response.
Do not ask for help from Homebrew or its maintainers on social media.
You may ask for help in Homebrew's discussions but are unlikely to receive a response.
Try to figure out the problem yourself and submit a fix as a pull request.
We will review it but may or may not accept it.

Warning: mysql@5.7 has been deprecated because it is not supported upstream!
==> Fetching dependencies for mysql@5.7: ca-certificates, openssl@3, libevent, lz4, openssl@1.1, abseil, jsoncpp, cmake, readline, sqlite, xz, python@3.12, python-setuptools, python@3.10, python@3.11 and protobuf

安装好后,问题依旧. 这个时候,出现了同样的问题. 应该就不能挂安装的问题了. 肯定是别的地方出了问题.

image.png

此问题可能是由于MySQL服务遇到了一些问题而不能正常启动。以下是一些可能的解决方法:

  1. 检查MySQL的日志文件。MySQL的日志文件通常位于/usr/local/var/mysql/您的计算机名称.local.err。这个日志文件可能会包含一些关于MySQL为什么无法启动的信息。
  2. 试试运行brew services stop mysql@5.7然后再brew services start mysql@5.7,看看是否能解决问题。
  3. 如果上述步骤仍然无法解决问题,可以尝试卸载并重新安装MySQL。运行以下命令:
brew remove mysql@5.7
brew cleanup
brew install mysql@5.7

然后,初始化数据库:

/usr/local/opt/mysql@5.7/bin/mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql@5.7)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

最后,尝试再次启动MySQL服务:

brew services start mysql@5.7
  1. 可尝试运行mysql.server start命令来启动MySQL服务。

我查看我的错误日志有:

8:43.179698Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled
2023-11-26T06:28:43.179740Z 0 [Note] /usr/local/opt/mysql@5.7/bin/mysqld (mysqld 5.7.44) starting as process 56422 ...
2023-11-26T06:28:43.182645Z 0 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive
2023-11-26T06:28:43.182701Z 0 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!

2023-11-26T06:28:43.182733Z 0 [ERROR] Aborting

2023-11-26T06:28:43.182752Z 0 [Note] Binlog end
2023-11-26T06:28:43.182808Z 0 [Note] /usr/local/opt/mysql@5.7/bin/mysqld: Shutdown complete

2023-11-26T06:28:43.6NZ mysqld_safe mysqld from pid file /usr/local/var/mysql/lijianhongs-MacBook-Pro.local.pid ended

你的日志显示错误为 "Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!"。 这意味着MySQL服务不应以root用户运行。

你可以尝试以下步骤来解决此问题:

  1. 停止MySQL服务:
brew services stop mysql@5.7
  1. 更改/usr/local/var/mysql的所有者为当前用户:
sudo chown -R $(whoami) /usr/local/var/mysql
  1. 现在,再以当前用户身份启动MySQL服务:
brew services start mysql@5.7

如果这还不能解决你的问题,你可能需要卸载并重装MySQL。退回到没有问题的数据库状态,或者从没有问题的备份中恢复也是可能的解决方案。

总结

遇到的问题应该就是权限不对. 中间有过命令修改一些权限.也就是从上面那个stackoverflow中的一些修改:

image.png

有可能我在运行start前运行过此命令. 然后造成了权限错乱. 但是, 我重新安装后应该不会有这个问题. 重要的应该是big sur的bug. 在这个命令的修改下的回答里面也有相应的回复.
image.png

修复方法:

sudo chown -R $(whoami) /usr/local/var/mysql
brew services restart mysql@5.7

然后再使用命令查询状态:

brew services info   mysql@5.7
mysql@5.7 (homebrew.mxcl.mysql@5.7)
Running: ✔
Loaded: ✔
Schedulable: ✘
User: root
PID: 59181

所以这个问题比较明显,就是big sur的兼容性. 具体问题由于环境问题和时间问题.没有做进一步的测试. 如果你也遇到这个问题可以一起讨论. 欢迎留言或者给我邮件.

评论

发表评论


取消