oracle为什么新创建的用户就直接是dba权限?
今天遇到一个问题,记录一下,之前没注意到这个问题
我在oracle中新创建了一个用户杨过yangguo,使用yangguo用户登录数据库,发现,在没有给yangguo用户授予DBA权限的情况下,yangguo居然可以使用sysdba的身份登录成功,如下
我们再来做个测试,我们随便使用一个用户名和密码连接oracle数据库,在连接时后面加上as sysdba
我现在随便乱写一个用户名和密码来连接数据库,比如asdfgh/ewrw6472 as sysdba
大家注意,注意:我oracle数据库中根本就没有asdfgh这个用户,asdfgh这个用户是我瞎写的。大家看下图
居然可以登录成功
再看下图,居然是sys用户,这到底是为什么呢?
其实新建的用户默认没有任何权限
在登录时加了as sysdba,这种登录,在本地计算机上默认是不检查用户名和密码的
加了as sysdba,我们会发现,用户名其实是sys
我们可以再次测试一下,随便写一个用户名和密码,后面加上as sysdba,看看效果就知道了
sqlplus aaa/aaa as sysdba(aaa是随手写的,不是任何用户名,数据库中也没有aaa这个用户),都可以登录成功,登录后show user,你会发现用户名其实是sys
因为oracle默认使用操作系统认证方式,只是你是以特定的操作系统帐户进入的操作系统(如Windows的administrator或unix的oracle账户),就可以这样做。换了别的操作系统账户身份就不行了,或者通过网络连接也是不可以的。
我们再测试一下,不在用户名和密码后面加as sysdba,看看是什么效果