service mysql start leaves"特权表:表' mysql.user'不存在"在我的日志文件中,服务器失败

时间:2017-08-21 13:22:15

标签: mysql linux permissions

我已经阅读了其他许多有类似问题的帖子,但似乎没有一个我遇到的问题,所以我希望有人可以提供帮助。

我所看到的所有其他帖子在某种程度上都说要重新开始安装或者至少销毁并重建主要的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是根本原因,但重新安装它并没有帮助。它现在被禁用并且服务正在运行,但只有当我以另一种方式启动它时,这不是我想要做的。我想以正常/正确的方式回到起点。替代方案只是暂时让我开始运作。

谢谢!

1 个答案:

答案 0 :(得分:0)

我仍然不知道为什么会发生这种情况。我确信它与移除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文件中的include行复制到my.cfn文件中。只要它有效,我真的不在乎文件夹的位置。

现在服务完全正常启动。