假设我有一个平台,允许用户输入一些 SQL 查询并执行它们。数据库是 Oracle 11.2
有没有办法限制用户对CREATE TABLE、CREATE VIEW 和ALTER table ADD COLUMN 的操作?
我看到的唯一方法是使用 Oracle DB 11.2 的语法解析所有用户提供的查询。但是这种方式是一种非常乏味的方式,因为免费访问中没有完整的语法(至少我找不到),并且实施一个需要几天甚至几周的时间。
授予 CREATE TABLE 和 CREATE VIEW 权限。
对于 ALTER TABLE,仅限制 ADD COLUMN,可以创建过程并授予 EXECUTE:
create or replace add_column( tableName varchar2, columnDefinition varchar2 )
as
execute immediate 'alter table '|| tableName || ' add column ' || columnDefinition;
end;
/
(未测试)
和
GRANT EXECUTE on ADD_COLUMN to user2;