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