📜  oracle 用户权限 - SQL (1)

📅  最后修改于: 2023-12-03 15:03:24.750000             🧑  作者: Mango

Oracle用户权限 - SQL

在Oracle数据库中,用户权限是指授予用户对数据库中某些对象或操作的访问或执行的权限。Oracle中有多种类型的权限,包括系统权限和对象权限等。

系统权限

系统权限是指允许用户在数据库下进行某些操作的权限,如创建、删除、修改用户等。在Oracle中,可以通过以下语句查看所有系统权限:

SELECT * FROM dba_sys_privs;

该语句将返回所有授予了系统权限的用户及其权限。

另外,也可以使用以下语句查询某个用户所拥有的系统权限:

SELECT * FROM dba_sys_privs WHERE grantee='username';

其中,username是要查询的用户的名称。

对象权限

对象权限是指允许用户访问数据库中某些对象的权限,如表、视图等。在Oracle中,可以通过以下语句查看所有对象权限:

SELECT * FROM dba_tab_privs;

该语句将返回所有授予了对象权限的用户及其权限。

另外,也可以使用以下语句查询某个用户对某个对象的权限:

SELECT * FROM dba_tab_privs WHERE owner='owner_name' and table_name='table_name' and grantee='username';

其中,owner_name是表所有者的名称,table_name是表的名称,username是要查询的用户的名称。

授予权限

在Oracle中,可以使用GRANT语句授予用户权限。例如,以下语句将向用户hr授予SELECT权限,以便从employees表中读取数据:

GRANT SELECT ON employees TO hr;

如果要授予用户使用某个存储过程或函数的权限,可以使用以下语法:

GRANT EXECUTE ON procedure_name TO username;
GRANT EXECUTE ON function_name TO username;

以上语句将允许用户调用存储过程或函数。

撤销权限

如果需要撤销用户的权限,可以使用REVOKE语句。例如,在以下示例中,我们将从用户hr中撤销对employees表的SELECT权限:

REVOKE SELECT ON employees FROM hr;

要撤销用户对存储过程或函数的权限,可以使用以下语法:

REVOKE EXECUTE ON procedure_name FROM username;
REVOKE EXECUTE ON function_name FROM username;
总结

与用户权限有关的SQL命令包括GRANT,REVOKE和SELECT。GRANT允许向用户或角色授予权限;REVOKE允许撤销权限。使用SELECT语句可以查询用户或角色所拥有的权限。熟练掌握这些命令可以在Oracle数据库中有效地管理和控制用户权限。