最近自学Oracle,看到一个参数
os_authent_prefix 看一下官方解释
Property | Description |
---|---|
Parameter type | String |
Syntax | OS_AUTHENT_PREFIX = authentication_prefix |
Default value | OPS$ |
Modifiable | No |
OS_AUTHENT_PREFIX
为Oracle 使用给想要连接服务器的用户授权的前缀。 Oracle 会把这个参数的值加在操作系统用户的名字和密码前面。
When a connection request is attempted, Oracle compares the prefixed username with Oracle usernames in the database.
当一个连接试图建立,oracle会去比较加上前缀的操作系统用户名和数据库中的用户名是否一致。
The default value of this parameter isOPS$
for backward compatibility with previous versions. However, you might prefer to set the prefix value to "" (a null string), thereby eliminating the addition of any prefix to operating system account names.
该参数的默认值为OPS$,但是可以修改为“”,这样就可以使操作系统用户名和数据库用户名一致而不需要前缀。
下面看一下如何使用这个参数来完成操作系统验证:
(1)操作系统WINDOWS XP SP3
ORACLEVERSION:10.2.0.1
首先:在注册表【HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\Key_OraDb10g_home1】添加此字串值 OSAUTH_PREFIX_DOMAIN = FALSE(值)
设置:SQLNET.AUTHENTICATION_SERVICES= (NTS)
(3) 初始化参数os_authent_prefix 修改为""
- SQL>altersystemsetos_authent_prefix=''scope=spfile;
- 系统已更改。
- SQL>shutdownimmediate
- 数据库已经关闭。
- 已经卸载数据库。
- ORACLE例程已经关闭。
- SQL>startup
- ORACLE例程已经启动。
- TotalSystemGlobalArea608174080bytes
- FixedSize1250404bytes
- VariableSize155192220bytes
- DatabaseBuffers444596224bytes
- RedoBuffers7135232bytes
- 数据库装载完毕。
- 数据库已经打开。
(4)以ADMINISTRATOR登陆WINDOWS XP
SQL> connect sys/admin as sysdba
已连接。
创建数据库用户:
- SQL>showparameteros_authent_prefix
- NAMETYPEVALUE
- -----------------------------------------------------------------------------
- os_authent_prefixstring
- SQL>createuserdylanidentifiedexternally;
- 用户已创建。
- SQL>grantconnect,resourcetodylan;
- 授权成功。
(5)创建操作系统用户dylan。
(6)切换用户到dylan,打开cmd输入以下命令查看效果:
- C:\DocumentsandSettings\Administrator>sqlplus/
- SQL*Plus:Release10.2.0.1.0-Productionon星期日8月1922:04:012012
- Copyright(c)1982,2005,Oracle.Allrightsreserved.
- 连接到:
- OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production
- WiththePartitioning,OLAPandDataMiningoptions
- SQL>showuser
- USER为"DYLAN"
(7)通常情况下,数据库用户登录后,即使没有ALTER USER 的权限,也是可以修改自己密码的,
但若是以此认证方式登录数据库,则不可以(未经确认,只是尝试失败得到的结论,但仔细想
想,这样要求也合理)。
- SQL*Plus:Release10.2.0.1.0-Productionon星期日8月1922:22:102012
- Copyright(c)1982,2005,Oracle.Allrightsreserved.
- 连接到:
- OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Production
- WiththePartitioning,OLAPandDataMiningoptions
- SQL>showuser
- USER为"DYLAN"
- SQL>alteruserdylanidentifiedbydylan;
- alteruserdylanidentifiedbydylan
- *
- 第1行出现错误:
- ORA-01031:权限不足
- SQL>connscott/tiger
- 已连接。
- SQL>alteruserscottidentifiedbytiger;
- 用户已更改。
- SQL>select*fromsession_privs;
- PRIVILEGE
- ----------------------------------------
- CREATESESSION
- UNLIMITEDTABLESPACE
- CREATETABLE
- CREATECLUSTER
- CREATESEQUENCE
- CREATEPROCEDURE
- CREATETRIGGER
- CREATETYPE
- CREATEOPERATOR
- CREATEINDEXTYPE
- 已选择10行。
说明:注册表参数 OSAUTH_PREFIX_DOMAIN = FALSE 是 WINDOWS环境下,能否使用
操作系统认证数据库登录的关键,默认情况下,为TRUE,这造成WIDNOWS环境
下无法使用操作系统认证数据库登录的原因!需要在注册表里加上此参数,
方可使用此方法!