如何修复 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
中指出。
此问题与 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
中指出。