我想设置一个MySQL实例来完全拒绝某些类型的查询.例如,任何不使用索引的JOIN都应该失败并且死亡并显示在应用程序堆栈跟踪上,而不是运行缓慢并显示在slow_query_log上,没有简单的方法将其绑定到导致它的实际测试用例.
另外,我想禁止"*"(如"SELECT*FROM ..."),并且基本上抛出语法错误.从MySQL性能角度来看,任何有问题或危险的东西都应该导致错误.
这可能吗?除了攻击MySQL内部......有一个简单的方法吗?
如果您确实想通过 SQL 控制用户/程序员的操作,则必须在 MySQL 和代码之间放置一个限制访问的层,例如只允许访问某些表和某些查询的 ORM。然后您还可以检查以确保表具有索引等。
不过,您将无法确定查询是否使用索引。这是由数据库中的查询优化器层决定的,逻辑可能会变得相当复杂。
| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |