MySQL Server 5.7将无法启动,并且未填充错误日志

Eli*_*Eli 3 mysql ansible

我最近在Ubuntu 14.04上安装了MySQL Server 5.7(通过使用此角色的 ansible 来具体).首次安装时启动很好,但是当我尝试重新启动它时,它会永远挂起:

sudo service mysql restart
 * Stopping MySQL Community Server 5.7.13
 * MySQL Community Server 5.7.13 is already stopped
 * Re-starting MySQL Community Server 5.7.13
.................................................................................................................................................................................... 
 * MySQL Community Server 5.7.13 did not start. Please check logs for more details.
Run Code Online (Sandbox Code Playgroud)

更糟糕的是,没有任何错误日志似乎得到任何地方居住(我已经检查/var/log/mysql//var/log/mysql.err).

以详细模式运行(sudo /usr/sbin/mysqld --user=mysql --verbose)也没有给我任何帮助.

我在哪里可以诊断这个?

cmm*_*bee 6

我也遇到了这个问题,我希望我的解决方案可以解决您的问题.

当我手动安装MySQL 5.7时,它运行正常,但是Ansible角色无法启动.mysql日志文件没有任何帮助./var/log/syslog但是检查我从AppArmor发现了很多消息:

Aug 10 18:50:05 vagrant-ubuntu-trusty-64 kernel: [ 4446.790627] type=1400 audit(1470855005.470:40): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/var/log/mysql.err" pid=13991 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=109 ouid=109
Run Code Online (Sandbox Code Playgroud)

AppArmor的被拒绝访问/var/log/mysql.err文件,因为它启动mysqld的政策不允许文件写入/var/log/,只是/var/log/mysql/.mysql的AppArmor策略是/etc/apparmor.d/usr.sbin.mysqld.处理日志文件访问的策略部分显示:

# Allow log file access
  /var/log/mysql/ r,
  /var/log/mysql/** rw,
Run Code Online (Sandbox Code Playgroud)

这基本上说AppArmor希望写入日志文件/var/log/mysql而没有任何规定/var/log.因为它看到mysql试图在策略内部的目录之外写入它会让你失望.有几个解决方案,包括添加一个新的策略让mysql写入文件/var/log,但我发现最简单的更新处理日志文件的Ansible变量.

geerlingguy.mysql角色的默认变量中,设置了两个日志文件指针:

mysql_slow_query_log_file: /var/log/mysql-slow.log
mysql_log_error: /var/log/mysql.err
Run Code Online (Sandbox Code Playgroud)

我重写这些默认值并将其移至/var/log/mysql:

mysql_slow_query_log_file: /var/log/mysql/mysql-slow.log
mysql_log_error: /var/log/mysql/mysql.err
Run Code Online (Sandbox Code Playgroud)

现在AppArmor很高兴,mysql启动并运行得很好.我的剧本的其余部分正常完成.

有关AppArmor和MySQL的更多信息,此页面提供了讨论和备用解决方案:https: //blogs.oracle.com/jsmyth/entry/apparmor_and_mysql