【赵渝强老师】Oracle数据库的用户认证方式

本文涉及的产品
PolarDB Agent Flow,2核4GB
RDS AI 助手,专业版
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 本文详解Oracle数据库用户认证机制,涵盖密码验证、全局验证和外部验证三种方式,并重点演示DBA管理员的OS认证实战:通过操作系统组权限实现免密登录,验证优先级及配置要点。

b443.png

Oracle数据库支持多种用户认证的方式,例如:密码认证、生物统计学验证、证书验证和标记验证,而在认证管理员用户和普通用户时又有一定区别。视频讲解如下:


下面分别进行介绍。


一、 验证数据库用户的方式

用户、设备或其它实体的身份要使用数据库中数据、资源或者调用数据库的应用程序,需要进行身份的验证。通过对该身份进行验证可建立一种信任关系,从而可进一步执行交互式操作。通过验证可将访问和操作与特定的身份联系起来,从而实现操作的可靠性。完成验证后,验证流程可允许或限制该实体许可的访问和操作的级别。创建用户时,必须确定要使用的验证方法,以后可修改此方法。Oracle支持三种不同的用户验证方式:密码口令验证、全局验证和外部验证。


  • 密码口令验证

该认证方式又称为Oracle数据库验证,创建的每一个用户都有一个关联密码口令。当用户尝试登陆数据库时,必须提供这个密码口令。数据库管理员可以在设置用户密码口令时,可以使其立即失效。这样会强制用户在首次登录后更改密码口令。

密码口令认证是最常用的数据库用户验证方式。


  • 全局验证

通过全局验证可以使用生物统计学、x509 证书、标记设备和Oracle Internet Directory来识别用户。使用这种方式的认证,需要外部设备的支持。


  • 外部验证

外部验证是通过使用宿主机的操作系统进行验证。用户在登陆Oracle数据库时,可以不提供用户名和密码口令而直接连接到Oracle数据库。Oracle数据库的SYS用户采用的就是这样的认证方式。使用外部验证时,数据库依赖于宿主机的操作系统或网络提供的验证服务来限制对数据库帐户的访问。


要使用Oracle数据库的外部认证,需要设置OS_AUTHENT_PREFIX的初始化参数,此参数的默认值为ops$。Oracle数据库会在每个用户的操作系统帐户名之前添加此前缀。当用户尝试建立连接时,Oracle数据库会将带有该前缀的用户名与数据库中的Oracle用户名进行比较。如果数据库中存在这样的一个对应用户,则Oracle允许该用户建立连接。


下面通过一个具体的示例来演示如何使用Oracle的外部认证登录数据库。

由于从Oracle 12c开始引入了容器数据库,建议使用12c以前的版本来进行测试。这里将使用Oracle 11gR2的版本来验证数据库用户的外部验证。


(1)查看当前CentOS操作系统的用户。

whoami
# 输出的信息如下:
oracle


(2)使用SYS用户登录Oracle,并查看初始化参数os_authent_prefix。

SQL> show parameter os_authent_prefix
NAME             TYPE  VALUE
--------------------------------------- ---------- -----------------
os_authent_prefix        string  ops$


(3)创建以ops$前缀开头的本地用户

SQL> create user ops$oracle identified by externally;


(4)给ops$oracle用户授权允许它登录并使用数据库

SQL> grant connect,resource to ops$oracle;


(5)直接使用sqlplus登录数据库。

sqlplus /


(6)查看当前登录的用户信息。

SQL> show user
# 输出的信息如下:
USER is "OPS$ORACLE"


二、 【实战】数据库管理员的认证


默认情况下,在UNIX和Linux操作系统中Oracle数据库管理员属于DBA的操作系统组,该组中的用户具有创建和删除数据库文件所需的权限。如果当前操作系统的用户就是Oracle数据库管理员,那么登录数据库可以直接使用操作系统验证。此时,用户不需要提供的用户名和密码口令直接进行登录。

操作系统验证优先于密码口令验证。特别是,如果您是操作系统中 OSDBA 或 OSOPER 组的成员,而且以 SYSDBA 或 SYSOPER 身份进行连接,则会使用关联的管理权限为您建立连接,不管您指定的用户名和口令是什么。


下面通过具体的步骤来验证数据库管理员的认证登录方式。


(1)查看当前操作系统的用户名。

whoami
# 输出的信息如下:
oracle


(2)查看当前操作系统用户的组信息。

cat /etc/group | grep oracle
# 输出的信息如下:
dba:x:1001:oracle
asmdba:x:1002:oracle
backupdba:x:1003:oracle
dgdba:x:1004:oracle
kmdba:x:1005:oracle
racdba:x:1006:oracle
oper:x:1007:oracle


(3)使用管理员登录数据库时,不提供用户名和密码。登录后查看当前登录的用户。

sqlplus / as sysdba
SQL> show user
# 输出的信息如下:
USER is "SYS"


(4)使用管理员登录数据库时,提供正确的用户名,但密码是错误的。登录后查看当前登录的用户。

sqlplus sys/asjfklf as sysdba
SQL> show user
# 输出的信息如下:
USER is "SYS"


(5)使用管理员登录数据库时,提供错误的用户名和密码。登录后查看当前登录的用户。

sqlplus afsalkj/fdsaflka as sysdba
SQL> show user
# 输出的信息如下:
USER is "SYS"


(6)将用户oracle从操作系统的dba组中删除。即:从文件/etc/group中删除下面的语句。

dba:x:1001:oracle


(7)重复第(3)步到第(5)步的操作,此时将发现无法登录Oracle数据库。

相关文章
|
5月前
|
Kubernetes Go API
xkube v4.0发布,完全开发源代码并新增k8s网关、亲和性很多k8s实用功能
xkubе v4.0 是开源K8s可视化管理平台(Gitee:https://gitee.com/eeenet/xkube),全面开放Go后端源码。新增Gateway API全系支持(Gateway/HTTPRoute/GRPCRoute等)、增强Deployment/STS/Job配置能力、Pod资源Top监控、节点资源统计及审计日志,界面与依赖全面升级。
621 228
|
2月前
|
存储 Linux Docker
告别繁琐安装!Obsidian 容器化部署,跨设备访问笔记自由
Obsidian 作为一款备受欢迎的本地知识管理工具,凭借其灵活的笔记链接、本地存储优势,成为很多开发者、知识管理者的首选。而通过 Docker 部署 Obsidian,不仅能实现跨环境快速部署,还能轻松实现数据持久化,适配 NAS、服务器、个人电脑等多种场景。本文将详细介绍 Windows 和 Linux 两大系统下,通过 Docker 部署 Obsidian 的完整流程,同时提供 Docker 一键安装命令,降低部署门槛。
704 2
|
6月前
|
Kubernetes 容器 Perl
kubernetes-1.34.2 二级制快速安装部署
kubenetes-1.34.2 二进制安装包,其他版本同样可以使用,包含etcd,kube-apiserver,kube-controller-manager,kube-scheduler,kubelet,containerd,coredns,metric-server的证书、配置文件,启动脚本。其中还包括证书的生成脚本、kubeconfig的生成脚本,同时包含了二进制可执行文件,本安装包已经包含了二进制文件,制作好的证书和安装包,可以直接拷贝到安装目录进行安装,也可以重新执行:make_install_package.sh 重新生成。该项目是为了配合k8s-1.34.2二进制的安装。
1161 1
|
6月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL锁的类型
PostgreSQL通过表级锁和行级锁实现并发控制,结合MVCC机制保障数据一致性。锁模式多样,粒度精细,可有效避免事务冲突,提升并发性能。
351 0
【赵渝强老师】PostgreSQL锁的类型
|
2月前
|
网络协议 Java 数据格式
【赵渝强老师】Docker容器的跨节点通信
本文详解Docker容器跨主机通信的三种方案,重点介绍基于Overlay网络的实现:通过ZooKeeper注册中心配置Docker集群,创建overlay网络,使不同主机上的容器能用虚拟IP直接互通,并提供完整部署步骤与验证方法。(239字)
274 3
|
2月前
|
人工智能 安全 前端开发
老金开源了个支持含CC、Codex等4个平台的编程治理框架
加我进AI讨论学习群,公众号右下角“联系方式” 文末有老金的 **开源知识库地址·全免费** --- 先通知一下,我的 Claude Code & OpenClaw 中文教程 更新了,Github上可见,飞书尚未同步最新版。。 版本教程截止:Claude Code v2.1.119 + OpenClaw v2026.4.24,地址在文末,一般我自己的介绍地址都在文末。 言归正传今天想给大家讲
|
5月前
|
SQL 数据库 OceanBase
【赵渝强老师】OceanBase的配置文件与配置项
OceanBase集群中,OBServer节点需预创建etc、log、run、store等目录,store下还需clog、slog、sstable子目录。etc存放配置文件,etc2/3为自动备份目录,配置项分集群与租户级,通过SHOW PARAMETERS查看,支持模糊查询。
421 4
|
7月前
|
NoSQL 测试技术 Redis
【赵渝强老师】Redis数据的迁移
Redis提供move、dump+restore和migrate三种方式实现数据迁移。move用于库内迁移,dump+restore跨实例传输,migrate则原子性地完成键的迁移与删除,支持多键批量操作,提升效率。
380 5