![分析 MySQL 查询日志以找到适当的权限](https://linux22.com/image/594914/%E5%88%86%E6%9E%90%20MySQL%20%E6%9F%A5%E8%AF%A2%E6%97%A5%E5%BF%97%E4%BB%A5%E6%89%BE%E5%88%B0%E9%80%82%E5%BD%93%E7%9A%84%E6%9D%83%E9%99%90.png)
客户的服务器只设置了一个用户,该用户拥有执行所有操作的全局权限。我们希望将这种情况改为每个应用程序一个用户,并拥有最低限度的必要权限。
为了做到这一点,在不破坏任何东西的情况下,我们想分析查询日志,找出执行的查询类型。有这样的工具吗?
最好是说只有选择,插入,更新和删除已经执行,我们可以删除所有其他权限。
答案1
没有任何工具可以分析查询日志并根据它告诉您现在和将来将运行什么,因为没有办法知道查询日志是否是软件可能生成的所有查询的详尽列表。
您需要查看执行查询的实际代码才能做出此决定。
如果你无权访问实际代码,那么在你的情况下最好的办法是创建每个应用程序的帐户,这些帐户只能访问特定应用程序所需的数据库,并且不能运行任何数据链接库声明——这至少会消除小鲍比桌子问题(坦率地说,任何运行 DDL 语句的系统代码可能从根本上就存在问题,需要仔细重新评估以进行正确的权限保护)。
在您的开发环境中执行此操作(您确实有一个,对吗?)并测试以确保您的应用程序正常运行。特别警惕您可能无法捕捉到的硬编码用户名/密码。
如果您没有足够的幸运拥有开发环境,请在下班时间进行测试,并禁用除内部开发/测试团队之外的所有用户对受影响应用程序的访问权限。
之后,您可以决定是否有必要对应用程序的某些部分施加进一步的限制(例如只读帐户、只能INSERT
或UPDATE
不能的帐户DELETE
等)。