sqlnet.ora文件中AUTHENTICATION_SERVICES参数对密码的控制

本文探讨了Oracle数据库中sysdba权限登录时的密码验证机制,解析了sqlnet.ora文件中AUTHENTICATION_SERVICES参数的作用,揭示了其默认配置的误解,并提供了如何明确设置密码验证的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用os的oracle用户登录sysdba时,默认不需要输入密码,随便输入个密码都可以登录oracle数据库。登录验证是在sqlnet.ora文件中有个AUTHENTICATION_SERVICES参数控制的,但对这个参数缺有歧义,在 samples/sqlnet.ora 文件中:

#sqlnet.authentication_services
#
# Syntax: A single value or a list from {beq, none, all, kerberos5,
#         radius, nts}
# Default: NONE
#
# Enables one or more authentication services.  If
# Oracle Advanced Security has been installed with Kerberos5
# support, using (beq, kerberos5) would enable authentication via
# Kerberos.
#
#sqlnet.authentication_services=(beq, kerberos5)

这里说默认是NONE,但在Oracle官方文档:
https://docs.oracle.com/cd/E11882_01/network.112/e10835/sqlnet.htm#NETRF199
中说默认是ALL,实际验证也默认是ALL。此时用任何密码都可以登录sysdba:

[oracle@rhel69 admin]$ sqlplus ignored_username/ignored_password AS SYSDBA

SQL*Plus: Release 11.2.0.4.0 Production on Mon May 11 11:43:36 2020

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> 

但只限于sysdba,system不以sysdba登录也不行。如果需要验证oracle的用户密码,需要显式设置:
SQLNET.AUTHENTICATION_SERVICES= (NONE)

文章下方是我的微信,欢迎加我。👇

Oracle数据库中,`listener.ora`、`sqlnet.ora` 和 `tnsnames.ora` 都是重要的配置文件,用于管理和连接数据库服务器: 1. **listener.ora**: - 这个文件配置了监听器(Listener),即网络服务适配器,它负责监听来自客户端的连接请求,并将它们路由到正确的数据库实例。 - 设置内容包括监听端口(LISTENER_PORT)、监听地址(LISTENER_ADDRESS)、静态服务名到实例映射(TNS_NAME)等。 - 比如,你可以添加这样的行: ``` LISTENER = ( LOCAL_LISTENER = ( ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = <port_number>) ) ); ``` 2. **sqlnet.ora**: - 主要配置SQL*Net服务,如网络通信协议(PROTOCOL)、加密(SECURITY)和连接属性(TCP_KEEPALIVE_INTERVAL)等。 - 它还包含了连接字符串的全局参数,如`SQLNET.AUTHENTICATION_SERVICES`影响登录方式。 - 示例: ``` SQLNET.HASH_PASSWORDS=NO SQLNET.AUTHENTICATION_SERVICES= (NTLS) ``` 3. **tnsnames.ora**: - 这是命名服务的配置文件,存储了服务名(Service Name)到物理地址映射,便于客户端动态地查找数据库实例。 - 例子: ``` DATABASE = (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=<hostname>)(PORT=<port>)) (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=<service_name>))) ``` 请注意,编辑这些文件需要具备一定的数据库管理知识,并在适当的时间进行,因为错误的配置可能会导致无法连接到数据库。在修改之前,最好先做好备份并确认操作步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姚远Oracle ACE

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值