当用户权限明确授予单独的表和视图,选中的用户可以访问这些表和视图,即使他们没有权限访问底层数据库。
如果你想撤销用户的访问,你可以这样做撤销命令。然而,撤销命令是显式的,严格限定作用域对象中指定的命令。
例如:
%的sql数据库上的所有特权撤销<数据库名称>的<用户> @ <域名>的撤销选择在<表名称> <用户> @ <域名>的
如果你想取消单个用户的所有权限可以用一系列的多个命令,或者你可以使用一个正则表达式和一系列的为循环自动化这个过程。
示例代码
这个示例代码相匹配则所得< >模式数据库名和表名,然后撤销用户的特权。搜索是递归的。
%的python重新导入搜索databaseQuery = sqlContext。sql(“显示数据库”)databaseList = databaseQuery.collect() #这个循环在数据库级别上撤销。在databaseList db: listTables = sqlContext。sql(“显示表”+ db(“数据库名”))tableRows = listTables.collect()如果搜索(<则所得> db(“数据库名”)):revokeDatabase = sqlContext。sql(“撤销所有PRIVILAGES数据库”+ db(“数据库名”)+“<用户名>”)显示(revokeDatabase)打印(“跑撤销查询”+ db(“数据库名”)+“<用户名>”)#这个循环撤销在表级别。则所得的表tableRows:如果搜索(< >,表(“表”)):revokeCommand = sqlContext。sql表(“取消选择”+“数据库”+”。“+表“表”+”从<用户名>”)显示(revokeCommand)打印(“撤销SELECT权限”+表(“数据库”)+“。”+表(“表”)+“<用户名>”)