如何修复 brew 安装的 MariaDB 挂在 `mysql.server stop` 上并且不会停止? [英] How can I fix brew-installed MariaDB that hangs on `mysql.server stop` and doesn’t stop?

查看:30
本文介绍了如何修复 brew 安装的 MariaDB 挂在 `mysql.server stop` 上并且不会停止?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个问题不是 mariadb 服务器:我无法使用 `mysql.server stop` 停止服务器.

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

I don’t want to run MariaDB at boot so brew services isn’t an option.

MariaDB 版本是10.4.11-MariaDB.

MariaDB version is 10.4.11-MariaDB.

推荐答案

我想我找到了罪魁祸首.

Think I found the culprit.

查看mysql.server的源码(cat/usr/local/bin/mysql.server),发现运行mysql.server start 以我的身份运行 mysqld_safe (whoami),这正是我的预期.

Having a look at the source code of mysql.server (cat /usr/local/bin/mysql.server), I discovered that running mysql.server start runs mysqld_safe as me (whoami) which is what I expected.

现在,我还发现运行 mysql.server stop 会运行一个 su_kill 函数,该函数将 su 运行为 mysql 失败,因为 mysql 用户在 macOS 上不存在.

Now, I also discovered that running mysql.server stop runs a su_kill function that runs su as mysql which fails because the mysql user doesn’t exist on 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 的正确方法.

Not sure if I am doing something wrong, but according to the documentation, running mysql.server start is the right way of starting MariaDB on brew installs.

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

Anyhow, to patch mysql.server stop, run:

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

这篇关于如何修复 brew 安装的 MariaDB 挂在 `mysql.server stop` 上并且不会停止?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆