声明
申明部分是从其他csdn用户哪里复制的,只是自己操作后发现无法达到我最后的预期,所以关闭忘记是看的那篇了,如果有侵权请见谅,联系我删除谢谢。
好了,故事的开始是我最近删投产表了。没错职业黑点,清除了投产表数据。。。真的悲催。差点被开除了。
DB的操作还是要权限分开,不然那天一恍惚,或者那个人不爽,分分钟删库走人就麻烦了。所以就想起了还是要把查询和 删除、修改的用户权限分开。最起码投产删除和修改操作得要走一下流程确认一下才给去执行。 接下来开始了。
创建查询权限的用户
1. 创建查询权限的用户
以具有适当权限的用户登录:
使用具有CREATE USER和GRANT权限的用户登录到Oracle数据库。
登录主机切换oracle用户
su - oraclesqlplus /nologconn /as sysdba;
2. 创建用户:
使用CREATE USER语句创建用户。在此语句中,你可以指定用户名和密码。
CREATE USER your_username IDENTIFIED BY your_password;
3. 授权登录权限
grant connect to your_username ;
4. 授予对应schema_name的查询权限:
查询对应的schema_name,使用有dba对应表空间或者schema_name权限的用户使用 sqldeveloper登录后执行:
SELECT USER AS schema_name FROM dual;
5. 使用GRANT语句授予查询权限。通常,查询权限是通过SELECT权限来实现的。
这个是批量所有表的操作脚本,之前看到说可以 grant select schema_name.* on user,但是我发现不行会报错。所以用下面的。感觉还可以。
BEGINFOR t IN (SELECT table_name FROM all_tables WHERE owner = 'schema_name') LOOPEXECUTE IMMEDIATE 'GRANT SELECT ON schema_name.' || t.table_name || ' TO your_username';END LOOP;END;/
注明:千万记得最后一个 / 是需要的。
在sqldeveloper中使用和看到对应表结构等信息
-----这个是我之前在网上查不到的哈哈,可能是我太菜了,上图.
正常链接后,sqldeveloper 模式是使用当期用户的 用户名作为 schema_name进行登录查询的。
解释一下 一般建立用户后oracle默认会给对应用户创建一个 schema_name。 一个schema_name 只可以对应一个用户。
这个时候你要去对应【其他用户】那里去看,然后在那个里面找到你授权的 schema_name(也就是全量权限的用户)
当然只有你授权给这个用户的 schema_name 对应下面的表才看的到。
在sqldeveloper 里面如果要查询就要使用对应 schema_name.table_name 的方式进行查询。
比如我在 schema_name Test 里面有一个 testtbl的表我要查询语句如下:
select * form Test.testtbl ;
本文只是自己记录。