mariadb.service 启动卡在激活

Sar*_*mar 8 mysql linux database mariadb systemctl

我刚刚在我的 ubuntu 19.10 中安装了 mariadb,sudo apt install mariadb-server mariadb-client之后我尝试通过sudo systemctl start mariadb.serviceshell get freeze启动服务器,我必须使用它Ctl+c来运行 shell。
在它显示的状态激活(开始)

  • 其他服务在 systemctl start 下工作正常
~$ sudo systemctl status mariadb.service  


mariadb.service - MariaDB 10.3.22 database server
   Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           ??migrated-from-my.cnf-settings.conf
   Active: activating (start) since Mon 2020-04-20 08:44:57 IST; 5min ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 10705 ExecStartPre=/usr/bin/install -m 755 -o mysql -g root -d /var/run/mysqld (code=exited, status=0/SUCCESS)
  Process: 10707 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
  Process: 10711 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && systemctl set-environment _WSRE
 Main PID: 10759 (mysqld)
    Tasks: 15 (limit: 4915)
   Memory: 64.6M
   CGroup: /system.slice/mariadb.service
           ??10759 /usr/sbin/mysqld

Apr 20 08:44:57 TheCybertron systemd[1]: Starting MariaDB 10.3.22 database server...
Apr 20 08:44:57 TheCybertron mysqld[10759]: 2020-04-20  8:44:57 0 [Note] /usr/sbin/mysqld (mysqld 10.3.22-MariaDB-0ubuntu0.19.10.1) starting as process 10759 ...
Run Code Online (Sandbox Code Playgroud)

Ale*_*Ale 15

您可能事先安装了 MySQL。是一个已知错误:MySQL 安装了 AppArmor 配置文件,而 MariaDB 包无法正确卸载它(请参阅Launchpad 上的详细信息)。

可以使用这些命令来解决问题(改编自上面提到的bug):

sudo systemctl stop mariadb
echo "/usr/sbin/mysqld { }" | sudo tee /etc/apparmor.d/usr.sbin.mysqld
sudo apparmor_parser -v -R /etc/apparmor.d/usr.sbin.mysqld
Run Code Online (Sandbox Code Playgroud)

这应该显示 Removal succeeded for "/usr/sbin/mysqld".

然后,非常重要:

sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/usr.sbin.mysqld
Run Code Online (Sandbox Code Playgroud)

如果没有这个,一些 AppArmor 配置文件会在重启后返回(不确定从哪里开始),完全阻止 MariaDB 加载(无法加载 libaio)。

然后您可以使用以下命令启动 MariaDB sudo systemctl start mariadb

  • 完美地工作。非常感谢! (3认同)
  • 我希望所有的答案都能像这个一样有效。谢谢!!!! (2认同)