繁体   English   中英

限制数据库中的表,用户可以在表中运行Laravel

[英]Restrict tables in DB, on which a user can run queries in Laravel

我正在使用Laravel开发具有“服务”表的应用程序,例如用户,项目,user_items等。

另外,我还有一些表需要允许用户运行其查询。 也就是说,用户将其查询发送到服务器,然后在该服务器上运行。

问题是:我想允许用户仅运行SELECT查询,并禁止运行UPDATE,INSERT和DELETE。 另外,我需要允许仅在确定的表上运行这些查询。 即,不允许用户从用户表中选择。

用户将运行原始查询,即将使用DB:raw()。

我如何在Laravel中做到这一点?

解决方案之一是创建两个数据库:MYSQL和sqlite,并允许用户仅使用sqlite来运行查询,但是在这种情况下,测试会出现问题。

您需要使用GRANT和REVOKE命令。 首先按照文档中的概述创建用户

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';
GRANT SELECT ON db1.* TO 'jeffrey'@'localhost';

然后一一撤销多余的

REVOKE SELECT ON db1.tablename FROM 'jeffrey'@'localhost'

您将必须在每个表上执行此操作。 因此,一种选择是编写循环执行此操作的PHP脚本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM