繁体   English   中英

服务mysql启动在我的日志文件中留下“特权表:表'mysql.user'不存在”并且服务器失败

[英]service mysql start leaves “privilege tables: Table 'mysql.user' doesn't exist” in my log file and the server fails

我已经阅读了许多其他类似问题的文章,但似乎与我所遇到的问题都不相同,因此希望有人可以提供帮助。

我看到的所有其他帖子都在某种程度上说是要重新安装,或者至少销毁并重建构建所有用户和其他引用的主要mysql数据库。 我不想这样做,因为我当前的数据库中有太多数据,而且仍然可以正常工作。

我在使用apparmor阻止来自mysql的文件构建时遇到了很多麻烦,所以我很生气并删除了apparmor。 这就是一切开始的时候。

以正常方式启动MySQL会给我日志文件中主题行的错误,并且服务器永不停止。 这是我通常使用的命令

service mysql start

另一方面,如果我以这种方式启动mysql,则可以正常工作!!!

mysqld --user=mysql --basedir=/var/lib/mysql --datadir=/var/lib/mysql/data

因此,现在我知道MySQL本身或数据库都没有问题。 一定有问题导致正常的启动过程不知道数据库应该在哪里。

问题是,配置文件没有任何更改。 他们读得很好,因为一旦我确实使数据库运行,一切就可以正常工作,并且我所有的应用程序都可以联机并正常运行。

配置文件具有正确的数据路径。

/etc/mysql/mysql.conf.d/mysqld.cnf: datadir = /var/lib/mysql/data

谁能想到这里会发生什么? 我敢肯定,删除apparmor是根本原因,但重新安装它并没有帮助。 现在已将其禁用,并且服务正在运行,但仅当我以其他方式启动它(我不想这样做)时才可以。 我想回到正常/正确的方式开始做事。 替代方案只是让我暂时起步并运行的权宜之计。

谢谢!

我仍然不知道为什么会这样。 我坚信这与撤除apparmor有关,但我无法证明这一点。 我也不知道为什么会发生,但现在一切正常。

在事情开始工作到停止工作之间,我执行的系统的唯一更改是移除了apparmor。

不知何故,我的/etc/mysql/mysql.conf.d文件夹中的配置文件停止被读取。它们被包含在文件/etc/mysql/mysql.cnf中。 文件/etc/mysql/my.cnf仅包含/etc/mysql/conf.d文件夹中的文件,而这些文件仍在被包含。

作为root(sudo su),我一直不停地尝试找出原因为何停止,并且其中一个非常有用的命令是...

mysqld --user=mysql --verbose --help

这显示了mysqld试图用来启动服务的所有值。 我立即看到datadir值不是我的配置文件中的值。 这就是为什么当我手动运行命令并指定数据目录但在尝试正常启动服务时失败时它起作用的原因。

我不知道为什么不再读取文件/etc/mysql/mysql.cnf。 权限看起来很好。 我什至尝试将内容复制到新文件,什么也没有。 help命令说它仅按此顺序读取这些文件。

/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

因此,由于厌倦了此操作,因此将包含行从mysql.cnf文件复制到了my.cfn文件中。 我真的不在乎文件夹的位置,只要它可以工作即可。

现在,该服务可以正常启动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM