MySQL服务器5.7韩元';t启动,错误日志为';没有人居住

MySQL服务器5.7韩元';t启动,错误日志为';没有人居住,mysql,ansible,Mysql,Ansible,我最近在Ubuntu14.04上安装了MySQL服务器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 .....

我最近在Ubuntu14.04上安装了MySQL服务器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.
更糟糕的是,任何地方都没有错误日志(我已经检查了
/var/log/mysql/
/var/log/mysql.err

在详细模式下运行(
sudo/usr/sbin/mysqld--user=mysql--verbose
)也不会给我任何帮助


我在哪里可以诊断这个问题?

我也遇到了这个问题,我希望我的解决方案能够解决您的问题

当我手动安装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
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,
这基本上是说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
我覆盖这些默认值,并将它们移到
/var/log/mysql

mysql_slow_query_log_file: /var/log/mysql/mysql-slow.log
mysql_log_error: /var/log/mysql/mysql.err
现在AppArmor很高兴,mysql启动并运行良好。我的剧本的其余部分正常完成

有关AppArmor和MySQL的更多信息,本页提供了讨论和备选解决方案:

它可能无法根据权限打开日志,因此数据库不会启动,也无法记录。日志和数据目录上的所有权限都属于我的组,用户mysqlI也有同样的问题。你找到解决方法了吗?100%正确。几个月前我谈到这个问题时忘记回答我自己的问题,但你的回答和我的一样。谢谢你写出来!