升级到Ubuntu 16.04后,MariaDB无法启动

亚历克斯·伯杜塞尔(Alex Burdusel)

从14.04 x64升级到Ubuntu 16.04

如果我尝试启动,mysqld它将失败,并且在系统日志中

kernel: [ 2336.792423] audit: type=1400 audit(1470265086.730:518): apparmor="DENIED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld" name="run/systemd/notify" pid=11850 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=117 ouid=0

我已添加/run/systemd/notify/到apparmor,但是我无法添加run/systemd/notify-缺少“ /”

我怎样才能解决这个问题?我需要MariaDB在单独的分区上运行

我正在将MariaDB与数据文件夹一起使用,/home/db/mysql我将其符号链接配置为从以下位置指向它

lrwxrwxrwx 1 mysql mysql 14 iun 22 20:58 /var/lib/mysql -> /home/db/mysql

并配置了应用程序装甲配置文件:

# vim:syntax=apparmor
# Last Modified: Tue Jun 19 17:37:30 2007
#include <tunables/global>

/usr/sbin/mysqld {
#include <abstractions/base>
#include <abstractions/nameservice>
#include <abstractions/user-tmp>
#include <abstractions/mysql>
#include <abstractions/winbind>

capability dac_override,
capability sys_resource,
capability setgid,
capability setuid,

network tcp,

/etc/hosts.allow r,
/etc/hosts.deny r,

/etc/mysql/*.pem r,
/etc/mysql/conf.d/ r,
/etc/mysql/conf.d/* r,
/etc/mysql/*.cnf r,
/usr/lib/mysql/plugin/ r,
/usr/lib/mysql/plugin/*.so* mr,
/usr/sbin/mysqld mr,
/usr/share/mysql/** r,
/var/log/mysql.log rw,
/var/log/mysql.err rw,
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/var/log/mysql/ r,
/var/log/mysql/* rw,
/var/run/mysqld/mysqld.pid rw,
/var/run/mysqld/mysqld.sock w,
/run/mysqld/mysqld.pid rw,
/run/mysqld/mysqld.sock w,
/run/systemd/notify w,
/home/db/** rwk,
/home/db/mysql/** rwk,

/sys/devices/system/cpu/ r,

# Site-specific additions and overrides. See local/README for details.
#include <local/usr.sbin.mysqld>
}

之前它在cd上失败/home/db/mysql,但是通过编辑/lib/systemd/system/mariadb.service和设置将其修复ProtectHome=false

亚历克斯·伯杜塞尔(Alex Burdusel)

在几次尝试失败后,我尝试使用不同的方法,这些尝试涉及apparmor配置,编辑/lib/systemd/system/mariadb.service/etc/mysql/my.cnf设置datadir,但均失败了。

  1. 停止服务(如果已启动): sudo service mysqld stop
  2. 清除安装 apt-get purge mysqld*

  3. 我删除了所有涉及MySQL和MariaDB的(搜查/etc/var他们的)。如果您认为将来可能需要它们作为参考,则可能需要备份它们。

    • 中的mysql和mariadb配置 /etc/systemd/system

    • mysql配置文件在 /etc/apparmor.d

    • 给你 /etc/mysql

    • 我曾经为符号链接mysql/var/lib(我的数据是安全的/home/db/mysql)。如果您的数据在其中,请跳过此步骤/var/lib/mysql

  4. 重新安装 sudo apt-get install mariadb-server

  5. 改名/var/lib/mysql,以/var/lib/mysql.bk和为创建符号链接/home/db/mysql/var/lib/mysql
  6. 将所有权设置为symlink和/home/db/mysqlmysql:mysql

一切都在重新启动后生效,并且不再消失。

我可以通过以下方式启动和停止服务 sudo /etc/init.d/mysql start sudo /etc/init.d/mysql stop

我猜想向systemd的迁移引起了所有这些麻烦。也许使用旧的init.d脚本不是执行操作的最佳方法,但这是我发现重新启动后保持MariaDB运行的唯一方法,否则它会由于以下原因而崩溃:

kernel: [ 2336.792423] audit: type=1400 audit(1470265086.730:518): apparmor="DENIED" operation="sendmsg" info="Failed name lookup - disconnected path" error=-13 profile="/usr/sbin/mysqld" name="run/systemd/notify" pid=11850 comm="mysqld" requested_mask="w" denied_mask="w" fsuid=117 ouid=0 

由于我使用的一些客户给了Failed to connect to database: Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)我,所以我不得不创建一个符号链接sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock链接在重启时被删除了...

因此,我必须编辑/etc/mysql/my.cnf/etc/mysql/debian.cnf文件来设置socket = /tmp/mysql.sockdebian.cnf说DO NOT TOUCH!,但是我趁机,因为my.cnf说Remember to edit /etc/mysql/debian.cnf when changing the socket location注意:需要重新启动才能看到已应用的更改。仅重新启动服务并没有应用它们。也许某些守护程序应该已经重新加载,但不知道是哪个守护程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章