如何修复 brew 安装的 MariaDB 挂在 `mysql.server stop` 并且不会停止?

How can I fix brew-installed MariaDB that hangs on `mysql.server stop` and doesn’t stop?

此问题与 mariadb server: I can't stop the server with `mysql.server stop` 不重复。

我不想在启动时 运行 MariaDB,所以 brew services 不是一个选项。

MariaDB 版本为 10.4.11-MariaDB

我想我找到了罪魁祸首。

看了mysql.server(cat /usr/local/bin/mysql.server)的源码,发现运行ning mysql.server start 运行s mysqld_safe 作为我 (whoami) 这是我所期望的。

现在,我还发现 运行ning mysql.server stop 运行s 是一个 su_kill 函数 运行s su as mysql 失败,因为 mysql 用户在 macOS 上不存在。

user='mysql'

su_kill() {
  if test "$USER" = "$user"; then
    kill $* >/dev/null 2>&1
  else
    su - $user -s /bin/sh -c "kill $*" >/dev/null 2>&1
  fi
}

不确定我是否做错了什么,但根据 documentation,运行宁 mysql.server start 是在 brew 安装上启动 MariaDB 的正确方法。

无论如何,要修补 mysql.server stop,运行:

cp /usr/local/bin/mysql.server /usr/local/bin/mysql.server.backup
sed -i "" "s/user='mysql'/user=\`whoami\`/g" /usr/local/bin/mysql.server

最初,每当我尝试 mysql.server stop 时,我都会收到错误消息:

ERROR! MySQL server PID file could not be found!

在某些时候,mysql.server stop 会挂起。

探索@sunknudsen 的答案,我cd进入目录:

$ cd /usr/local/bin/

然后打开文件:

mysql.server

代码user='mysql'只出现在一行,所以我只是把那行注释掉并替换为:

185 #user='mysql'
186 user=`whoami`

现在,情况是这样的:

~$ mysql.server start
Starting MariaDB
.200804 15:43:28 mysqld_safe Logging to '/usr/local/var/mysql/My-MacBook-Pro-2.local.err'.
200804 15:43:29 mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql
 SUCCESS! 

~$ mysql.server stop
Shutting down MariaDB
. SUCCESS! 

~$ mysql.server stop
ERROR! MariaDB server PID file could not be found!

正确的 start/stop 状态也在 System Preferences/MySQL 中指出。