今天也总算有点东西想写在博客里了,不过仅当作备忘录,以便以后忘的时候能马上到网上找找。前几天在玩oracle的时候,发现我输入的用户在user里面根本就不存在,虽然当时已经发现很奇怪了,但是也没有深究下去。今天我又用sys用户建了一个aa用户,但是没有分配任何权限给aa,很奇怪的是,我用aa用户以sysdba登录竟然能成功,当时就晕了。更奇怪的是,随便我怎么输用户和密码都可以以sysdba登录,完全不受限制,难道是oracle的用户名和密码都没用了,想想也不太可能。我马上去网上找相关资料,发现原来oracle有两种密码验证方式,一种是操作系统另外一种是以密码文件的方式。还找到了设置两种验证方式的设置文件:%ORACLE_HOME%/ora92/network/admin 下面的sqlnet.ora文件中的 SQLNET.AUTHENTICATION_SERVICES= (NONE) 后面的参数有三种,摘录英文资料介绍如下:
1. NONE for no authentication methods. A valid username and password can be used to access the database.
2. ALL for all authentication methods
3. NTS for Windows NT native authentication
而我的默认参数是 NTS,所以我能登录系统,当然就可以随便看数据库里面的东西了,甚至什么都不用输入,就可以以sysdba的身份登录到oracle。原来是在创建oracle时,oracle建了一个ora_dba服务,并且把系统的Administrator用户加入进去,所以如果用操作系统方式验证的话,就出现我开头碰到的情况(大概是这样的原因吧,^_^)。