oracle sys 密码修改(忘记sys密码解决方案)

用户具有alter user 系统权限,就可以修改所有用户密码,对于sys也可以修改。

如果忘记sys密码,可以用操作系统权限登录:dos下输入sqlplus / as sysdba;

授予普通用户(比如scott或者创建新用户) alter user权限或者dba角色,当授予dba角色时:可通过select * from v$pwfile_users查看用户有哪些角色


创建新用户test:
SQL> create user test identified by test ;
授予其连接及修改用户权限:
SQL> grant create session,alter user to test;
在只有sys账户拥有sysdba与sysoper的权限。
SQL> select * from v$pwfile_users;

USERNAME SYSDBA SYSOPER
------------------------------ ------ -------
SYS TRUE TRUE
以用户test连接数据库:
SQL> conn test/test;
修改数据库超级用户sys的密码:
SQL> alter user sys identified by sys;
sys账户以修改后的密码连接数据库,说明修改成功。
SQL> conn sys/sys as sysdba
总结如下:
1、默认情况下,只要用户具有alter user的权限,那么可以修改
oracle中任意用户,包括alter user中的所有optional。

接上例:
SQL> conn test/test

2、默认情况下,system账户之所以能修改sys的密码,是因为它属于dba角色, 而dba角色当然具有alter user权限。

3、所谓最高权限,在默认情况下,sys账户具有sysdba权限,是oracle中的超级用户, 所以以sys as sysdba登录后,几乎可以在数据库中作任何操作。且sysdba权限不要轻易授权其它用户,否则会给数据库安全带来问题。

4、system账户默认情况下属于dba角色,它的权限仅次于sys账户。

再次修改sys密码,都可以登录,说明sys以前的密码并没有失效。

为什么在修改后新密码和就密码都可以登录呢?是因为oracel 密码验证首先是采用的操作系统验证,也就是不管用户名和密码是什么,只要是以 as sysdba 登录的,默认都是sys用户。也就是说conn sys/sdjksdfa as sysdba 或者conn 任意字符串/任意字符串 as sysdba 登录,默认都是sys用户,并且全是合法的,它和as sysdba有关系。

服务器登录,只要是以as sysdba 登录,默认都是sys用户 ,因为采用了操作系统验证,操作系统用户administrator 用户属于dba 组

远程访问,需要输入正确的口令才可以访问数据库,这时候采用的是口令文件验证。

猜你喜欢

转载自langzhiwang888.iteye.com/blog/1670917