MySQL 即使定义器设置为解决初始错误,错误 1449 仍然出现?

MySQL error 1449 reappearing even though definer was set to resolve initial error?

星期一我搞砸了一个数据库。

我们在 VPS 上有一个应用程序 运行,使用 cPanel 和 phpmyadmin,我通知开发人员我将对数据库进行一些查询以提取信息。

因此,我使用 "Visual Builder" 查询工具进行了一些大型查询,但 Web 应用程序卡住了。查询未加载,甚至刷新页面也不起作用。该网站没有加载,用户无法登录。所以我使用 WHM 以 root 身份登录并手动终止查询。我这样做之后,系统还是没有运行.

然后,数据库完全崩溃了,我收到了这些错误消息:

这样做之后,数据库以某种方式自行修复,Web 应用程序再次运行。但是,我们看到我们无法在系统中更新某些职位或添加新职位。如果您在作业上按下 "SAVE" 按钮,系统只会给出一条 "undefined" 消息。

开发人员查看后发现这是导致问题的原因:

[ 开发人员继续添加定义器,问题就解决了。涂黑的 "user"@1.0.0.0" 是实际的 cPanel 帐户用户名。

但是,这并没有持续,因为昨天晚上发生了完全相同的情况。 Web 应用程序在星期二和星期三的大部分时间 运行 都很好,然后突然间用户无法再次更新他们的工作,这意味着定义者用户再次被删除,即使没有人在数据库中做任何事情。

有人遇到过这个问题吗?我读 this thread on the topic and even though what they say makes sense, I believe the developers did this but the error still occurred.

当我通过 cPanel 登录 phpmyadmin 时,我收到一个名为 "cpses_234ikjih@localhost.com" 的奇怪用户。这可能与此错误有关吗?我相信在服务器发疯之前,这个用户只是cPanel帐户的名称(例如:"cPanelAccountName@localhost.com".

总结一下您的 post,我看到的是您有一个 MySQL 用户,该用户消失了,您重新创建了该用户,然后又消失了。

这里肯定有一些外部因素。有人可以访问您的数据库并恶意删除用户或出于误解,可能有计划的工作,也可能与您的虚拟主机有关。

我将从审计数据库帐户开始,并尽可能限制访问。检查向网络公开的任何界面,例如 WordPress、Joomla 或其他应用程序。

您应该启用日志记录,MySQL 可以允许多种程度的日志记录。我认为对您最有用的是审计日志,尽管老实说我从来没有专门使用过它。您将启用它来记录未来的事件。二进制日志可能包含已经发生的事情的记录。

已解决

我设法通过更改 MySQL 数据库密码和 cPanel 帐户密码解决了这个问题。

我读过一篇 post,有人说有一个会话文件可能存储了一个旧会话,更改密码可以解决这个问题。幸运的是,现在已经 5 天没有出现错误 1449 了。