MySQL Records正在被删除,原因不明

时间:2013-11-16 00:29:51

标签: php mysql

您好我有一个包含7个表的小型数据库,以及PHP网站上的一些选项,用于插入和更新选项。由于未知原因,数据库中的某些记录会随机删除,我不知道是什么导致这种情况。任何想法如何观察这个问题或应该做什么?有没有办法限制整个数据库删除要禁用的选项?

1 个答案:

答案 0 :(得分:0)

可以创建一个不能删除行的MySQL用户,或做任何其他令人讨厌的事情。然后,程序可以更改为使用该MySQL用户,而不是当前正在使用的任何内容(查找MySQL连接的任何位置,可能来自配置文件)。

登录MySQL。然后,使用以下内容创建受限用户:

GRANT SELECT on database_name.* to 'read-only-user' IDENTIFIED BY 'some-password';
FLUSH PRIVILEGES;

以下是一个有用的文档页面:http://dev.mysql.com/doc/refman/5.1/en/grant.html。如果您的应用程序需要能够做的不仅仅是阅读,请将上述内容改为GRANT SELECT, INSERT, UPDATE。有关更多信息,请参阅链接。

至于找到问题的原因,它在很大程度上取决于您的应用程序的编写方式(是否使用ORM访问数据库等)。一旦限制用户如上所述,您可能会发现您的应用程序错误;这很好,如果是这样,因为错误信息应该显示你在哪里看。

否则,如果数据库的所有内容都通过中心位置,您可以在应用程序中添加一些日志记录(或者可能在您的应用程序中已经有一些配置设置)。如果SQL语句分散在各处,您可能希望尝试在代码中搜索DELETE或DELETE FROM(不区分大小写)。或者,您可以在MySQL本身内为查询设置日志记录,但这不是那么简单,并且仍然不会告诉您DELETE正在发生的应用程序在哪里(但如果其他方法失败,这至少会给你有关在哪里查看的更多信息。