2017-06-15 88 views
3

我想再次看看我的LogServer,但所有的突然当我访问的URL我得到这个消息:的Mysql无法启动了

我在Ubuntu xenial

FATAL运行:无法连接到MySQL服务器在'localhost'上。请确保您在指定一个有效的MySQL数据库名称“包括/ config.php文件”

当我这样做journalctl -xe我得到以下信息:

-- Unit mysql.service has begun starting up. 
Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112 

Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=0 

Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112 
Jun 15 19:26:12 arjanlog kernel: audit: type=1400 audit(1497547572.504:69): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" 
name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_m 

Jun 15 19:26:12 arjanlog kernel: audit: type=1400 audit(1497547572.504:70): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=3665 comm="mysqld" requested_mask="r" 

Jun 15 19:26:12 arjanlog kernel: audit: type=1400 audit(1497547572.504:71): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_m 

Jun 15 19:26:12 arjanlog systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE 

有没有人有什么想法?

+0

我在说一句话'DENIED',它似乎是一个权限问题。 –

+0

试试这个:'sudo apt-get install mysql-server' – Edward

+0

@Edward mysql-server已经是最新的版本(5.7.18-0ubuntu0.16.04.1) – Arjan

回答

0

要解决:sudo的服务的AppArmor拆卸

+1

这就是解决它的方法...... – Papotitu

0

它可能没有必要完全停止AppArmor的。它应该是足够的蛮力禁用AppArmor的启动mysqld,如果你不想追查的核心问题:

ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/usr.sbin.mysqld

6

我也有这个问题,并通过在/etc/apparmor.d/usr.sbin.mysqld的AppArmor的配置文件修复解决了它。我添加这些行:

/proc/*/status r, 
    /sys/devices/system/node/ r, 
    /sys/devices/system/node/node0/meminfo r, 

journalctl -xe输出显示MySQL需要使用的许可文件。您还可以在/var/log/syslog

Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112 
Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=0 
Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112 

这意味着,/usr/sbin/mysqldDENIED试图打开/proc/3665/status/sys/devices/system/node/阅读(r)。

请注意,在apparmor配置文件中,尾部斜杠/sys/devices/system/node/是必要的,所以不要离开它!

0

对我来说,错误是,MySQL数据库被损坏。我看得出来,当我去记录/var/log/mysql/error.log,它显示了一个错误:

InnoDB: Database was not shutdown normally! 

有一些解决方案在那里这人可以使用像table corruption issue

但正如我没它没有为我工作无法以WRITE模式启动服务器以解决问题。

我设法通过创建一个目录副本/var/lib/mysql来解决问题 - 我复制到mysql.old,然后删除mysql目录。

然后我打电话在终端的命令:

sudo mysqld --initialize --initialize-insecure 

要生成新的mysql目录

然后我已通过改变mysql目录的用户和组到用户改变的新的目录的权限:mysql和组:mysql。使用chown命令:

sudo chown -R mysql:mysql /var/lib/mysql 

然后我打电话命令:

sudo mysql -u root 

,并改变密码:

SET PASSWORD FOR [email protected]'localhost' = PASSWORD('newpassword'); 

然后重新启动MySQL服务器:

​​

和夏娃有效的工作。


某些命令,我​​一路上都使用(虽然不知道他们到固定的问题有多大贡献):

sudo apt-get --reinstall install mysql-server-5.7