gpt4 book ai didi

mysql - 服务 mysql 启动在我的日志文件中留下 "privilege tables: Table ' mysql.user' 不存在“并且服务器失败

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:33 26 4
gpt4 key购买 nike

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

我看到的所有其他帖子,在某种程度上都说要重新安装或至少销毁并重建主 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。权限看起来不错。我什至尝试将内容复制到一个新文件,但什么也没有。帮助命令表示它仅按此顺序读取这些文件...

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

所以,因为我厌倦了弄乱它,所以我将 mysql.cnf 文件中的包含行复制到 my.cfn 文件中。只要它有效,我真的不在乎该文件夹包含在何处。

现在服务可以正常启动了。

关于mysql - 服务 mysql 启动在我的日志文件中留下 "privilege tables: Table ' mysql.user' 不存在“并且服务器失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45798255/

26 4 0