gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:05:27 25 4
gpt4 key购买 nike

我正在使用 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'

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

关于php - 限制数据库中的表,用户可以在 Laravel 中运行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41481990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com