如何防止任何人在mysql

时间:2015-10-23 13:54:35

标签: mysql sql database logging

出于安全目的,我们将创建一个数据库日志,其中包含对数据库上不同表所做的所有更改,为实现此目的,我们将使用所述的here触发器,但我担心的是,如果系统管理员或任何拥有root权限的人都会更改日志中的数据以获得好处,然后它会使日志变得毫无意义。因此,我想知道是否有办法阻止任何人,我的意思是没有人对日志表进行任何更改,即删除表,更新和删除行。如果这是可能的?另外,对于我的日志表,是否可以跟踪使用更新查询更改的先前数据?我希望在我的日志表中有一个先前的和新的数据,以便我们可以知道所做的更改。

3 个答案:

答案 0 :(得分:2)

您尝试解决的问题很难,因为您希望有人可以管理您的系统,但您不希望他们能够实际对系统的所有部分执行某些操作。这意味着您需要自己管理系统并为某人提供有限访问权限,信任所有管理员或寻找外部解决方案。

您可以做的是将您的日志写入只有您(或至少:与第一个不同的管理员)可以访问的系统。

然后,如果您只在此系统上编写(并且不允许更改/更新和删除),您将能够保留可信日志,甚至在发生篡改时发现不一致。

第二种方法是使用特定方法写入日志,添加签名消息的方法。通过这种方式,您可以确保该系统已添加日志。如果您还保存完整系统状态的(已签名)消息,您可能会识别出任何篡改。 '系统'用于签名的应该明显地存在于另一台机器上,使其与第一个选项相当。

答案 1 :(得分:1)

没有办法阻止root访问权限进行更改。组合方法可以帮助您检测篡改。您可以创建另一个具有更多访问权限的服务器并在那里克隆数据库表。记录两台服务器上的所有登录活动,并在服务器之间交叉备份日志。另外,定期关闭服务器备份。您还可以创建一个与日志表的每一行匹配的散列表。他们不仅需要找到创建哈希的代码,还要对其进行反向工程并更改匹配的时间戳。但是,我认为最好的办法是制作一个没有网络登录的克隆服务器。仅限物理登录。如果您认为有任何篡改,您将不得不做一些取证。您甚至可以将USB密钥添加到物理克隆服务器,并将其与CEO或其他东西保持一致。当然,如果你不能信任系统管理员,无论你的工作是什么都很困难。诀窍不是创造坚固的墙壁,而是精细的网络,并仔细检查通过网络传播的一切。

一旦设置了Master Slave关系,并且只允许不受信任的用户访问slave数据库,您就不需要更改代码了。只需将master数据库用作代码中的主数据库即可。以下链接是有关设置主从复制的信息。但要完全有效,这些需要在不同的服务器上。我不知道这个解决方案如何在一台服务器上运行。这可能是,我只是不知道。

https://dev.mysql.com/doc/refman/5.1/en/replication.html

答案 2 :(得分:-1)

打开PhpMyAdmin 打开桌子 并在表上分配表级权限