我有一个 Web 应用程序,它接受 SQL 查询并以报告的形式生成输出。我不希望用户以任何方式修改现有数据库。为此,我决定通过仅查看所提供查询的第一个单词来阻止 Web 应用程序级别的所有 CREATE、ALTER、DELETE、DROP 命令。这将阻止用户更改现有架构或数据库实例。
最近我发现 Microsoft SQL Server 有命令SELECT * INTO NEW_TABLE FROM OLD_TABLE
,它允许我们创建
现有表的副本。是否还有更多此类命令允许我们通过传递 Web 应用程序过滤器来修改现有数据库的架构或实例?
也欢迎任何根据我的要求阻止命令的更好方法,但我不希望以安全为代价剥夺使用 SQL 查询创建报告的自由。
为什么我不能使用 Grant
我从评论和答案中看到,授权是一个不错的选择,但我无法使用它们,因为用户提供了我用来创建报告的数据库详细信息以及用户名和密码。我为用户指向的数据库表创建了报告
最佳答案
您可以根据仅具有读取权限的用户执行的查询结果生成报告。这意味着管理数据库连接以允许应用程序的其他部分操作数据(您将需要以不同的用户身份进行连接)。
CREATE USER 'foouser'@'localhost' IDENTIFIED BY 'barpass';
GRANT SELECT ON db.table TO 'foouser'@'localhost';
关于mysql - 是否可以在不使用 create、alter、delete、drop 命令的情况下修改任何数据库的架构或实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22163536/