Part01-基础概念与理论知识
1.1 操作系统认证原理
风哥教程参考Oracle官方文档Security部分。Oracle数据库操作系统认证允许用户使用操作系统用户身份登录数据库,无需输入数据库密码。这是通过验证用户的操作系统进程凭据实现的。更多视频教程www.fgedu.net.cn
1.2 操作系统认证的优势
1. 简化登录过程,无需记忆多个密码;2. 与操作系统安全策略集成;3. 减少密码管理工作量;4. 提高安全性,避免密码在网络中传输。
1.3 操作系统认证的类型
1. 本地操作系统认证:在数据库服务器本地登录;2. 远程操作系统认证:通过网络远程登录,需要配置信任关系。
Part02-生产环境规划与建议
2.1 用户组规划
生产环境建议创建专用的操作系统用户组用于Oracle数据库访问,如oinstall、dba、oper等。根据用户的角色分配到不同的组。
2.2 安全策略
制定严格的操作系统用户管理策略,包括密码策略、用户生命周期管理、权限最小化等。学习交流加群风哥微信: itpux-com
2.3 远程访问规划
如果需要远程操作系统认证,需要配置Oracle Net Services的信任关系,确保网络安全。
Part03-生产环境项目实施方案
3.1 配置操作系统用户和组
创建Oracle数据库所需的操作系统用户和组。
# groupadd -g 54321 oinstall
# groupadd -g 54322 dba
# groupadd -g 54323 oper
# 创建Oracle用户
# useradd -u 54321 -g oinstall -G dba,oper oracle
# 创建普通用户用于测试
# useradd -u 1001 fgedu_user
# usermod -a -G dba fgedu_user
# 设置用户密码
# passwd oracle
# passwd fgedu_user
3.2 配置sqlnet.ora文件
配置数据库以启用操作系统认证。
# vi $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES = (BEQ, NTS)
# 对于Linux/Unix系统使用:SQLNET.AUTHENTICATION_SERVICES = (BEQ, ALL)
SQLNET.AUTHENTICATION_GSSAPI_SERVICE = oracle
SQLNET.AUTHENTICATION_GSSAPI_KEYTAB = /etc/krb5.keytab
3.3 配置本地操作系统认证
配置数据库以允许本地操作系统认证。
$ sqlplus / as sysdba
SQL> SHOW PARAMETER remote_login_passwordfile;NAME TYPE VALUE
———————————— ———– ——————————
remote_login_passwordfile string EXCLUSIVE
# 确保REMOTE_LOGIN_PASSWORDFILE设置为EXCLUSIVE或SHARED
# 如果需要修改
SQL> ALTER SYSTEM SET remote_login_passwordfile = ‘EXCLUSIVE’ SCOPE = SPFILE;System altered.
# 重启数据库使配置生效
SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP;
3.4 创建操作系统认证用户
在数据库中创建映射到操作系统用户的数据库用户。
SQL> CREATE USER OPS$ORACLE IDENTIFIED EXTERNALLY;User created.
SQL> GRANT DBA TO OPS$ORACLE;Grant succeeded.
# 创建OS认证的普通用户
SQL> CREATE USER OPS$FGEDU_USER IDENTIFIED EXTERNALLY;User created.
SQL> GRANT CONNECT, RESOURCE TO OPS$FGEDU_USER;Grant succeeded.
# 创建表空间和表
SQL> CREATE TABLESPACE fgedu_data DATAFILE ‘/oradata/fgedudb/fgedu_data01.dbf’ SIZE 10G AUTOEXTEND ON NEXT
1G;Tablespace created.
SQL> ALTER USER OPS$FGEDU_USER DEFAULT TABLESPACE fgedu_data;User altered.
SQL> CREATE TABLE OPS$FGEDU_USER.emp (id NUMBER, name VARCHAR2(50), salary NUMBER);Table created.
SQL> INSERT INTO OPS$FGEDU_USER.emp VALUES (1, ‘风哥1号’, 5000);1 row created.
SQL> COMMIT;Commit complete.
Part04-生产案例与实战讲解
4.1 使用本地操作系统认证登录
使用操作系统用户登录数据库,无需输入密码。
# su – oracle
# 使用操作系统认证登录数据库
$ sqlplus /SQL*Plus: Release 19.0.0.0.0 – Production on Thu Mar 31 12:00:00 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0
SQL> SHOW USER;USER is “SYS”
SQL> SELECT * FROM v$version;BANNER BANNER_FULL BANNER_LEGACY CON_ID
——————————————————————————–
——————————————————————————–
——————————————————————————– ———-
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production Oracle Database 19c Enterprise
Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0 Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production 0
4.2 使用普通用户操作系统认证
使用普通操作系统用户登录数据库。
# su – fgedu_user
# 使用操作系统认证登录数据库
$ sqlplus /SQL*Plus: Release 19.0.0.0.0 – Production on Thu Mar 31 12:05:00 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0
SQL> SHOW USER;USER is “OPS$FGEDU_USER”
SQL> SELECT * FROM emp;ID NAME SALARY
———- ————————————————– ———-
1 风哥1号 5000
SQL> INSERT INTO emp VALUES (2, ‘风哥2号’, 6000);1 row created.
SQL> COMMIT;Commit complete.
4.3 配置远程操作系统认证
配置数据库以允许远程操作系统认证,需要使用Oracle Net Services的信任关系。学习交流加群风哥QQ113257174
# vi $ORACLE_HOME/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db.fgedu.net.cn)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
ADR_BASE_LISTENER = /oracle/app/oracle
# 配置sqlnet.ora文件,添加远程认证配置
# vi $ORACLE_HOME/network/admin/sqlnet.ora
# 对于Linux/Unix系统
SQLNET.AUTHENTICATION_SERVICES = (BEQ, TCPS, IPC)
# 配置tnsnames.ora文件
# vi $ORACLE_HOME/network/admin/tnsnames.ora
FGEDUDBS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db.fgedu.net.cn)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fgedudb)
)
)
4.4 测试远程操作系统认证
在客户端上测试远程操作系统认证。
# useradd -u 1001 fgedu_user
# 配置客户端的sqlnet.ora文件
# vi $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES = (ALL)
# 配置客户端的tnsnames.ora文件
# vi $ORACLE_HOME/network/admin/tnsnames.ora
FGEDUDBS =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = db.fgedu.net.cn)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = fgedudb)
)
)
# 测试远程操作系统认证
$ sqlplus /@FGEDUDBS
SQL*Plus: Release 19.0.0.0.0 – Production on Thu Mar 31 12:15:00 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0
SQL> SHOW USER;USER is “OPS$FGEDU_USER”
SQL> SELECT * FROM emp;ID NAME SALARY
———- ————————————————– ———-
1 风哥1号 5000
2 风哥2号 6000
4.5 管理操作系统认证用户
管理操作系统认证用户的权限和状态。
$ sqlplus / as sysdba
# 查询操作系统认证用户
SQL> SELECT username, account_status, created
FROM dba_users
WHERE username LIKE ‘OPS$%’;USERNAME ACCOUNT_STATUS CREATED
—————————— ——————————– ———
OPS$ORACLE OPEN 31-MAR-26
OPS$FGEDU_USER OPEN 31-MAR-26
# 授予权限给操作系统认证用户
SQL> GRANT CREATE TABLE, CREATE VIEW TO OPS$FGEDU_USER;Grant succeeded.
# 锁定操作系统认证用户
SQL> ALTER USER OPS$FGEDU_USER ACCOUNT LOCK;User altered.
# 测试锁定后的登录
$ su – fgedu_user
$ sqlplus /SQL*Plus: Release 19.0.0.0.0 – Production on Thu Mar 31 12:20:00 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
ERROR: ORA-28000: the account is locked
Enter user-name:
Part05-风哥经验总结与分享
1. 操作系统认证适用于数据库管理员和系统维护人员,简化了登录过程。风哥提示:生产环境建议仅对管理员启用操作系统认证,普通用户使用密码认证。
2. 确保操作系统用户的安全性,使用强密码策略和定期密码更换。
3. 远程操作系统认证需要谨慎配置,确保网络安全和信任关系的正确设置。
4. 定期审计操作系统认证用户的登录情况,及时发现异常访问。更多学习教程公众号风哥教程itpux_com
5. 结合操作系统的用户管理功能,可以实现用户的集中管理和权限控制。
6. 在混合认证环境中,需要明确区分操作系统认证用户和密码认证用户,避免权限混淆。from oracle:www.itpux.com
