温馨提示×

linux lsnrctl如何授权

小樊
39
2026-10-07 23:53:21
栏目: 智能运维

在 Linux 环境下使用 lsnrctl(Oracle Listener Control),“授权”一般涉及 监听器管理权限控制,而不是像数据库用户那样的 GRANT 授权。下面按常见场景说明。


一、lsnrctl 本身的“授权”机制

1️⃣ 操作系统用户授权(最常见)

lsnrctl 必须由 Oracle 软件属主用户(通常是 oracle)执行:

su - oracle
lsnrctl status

✅ 非 oracle 用户执行会报权限不足。


2️⃣ 监听器管理权限(ADMIN_RESTRICTIONS)

Oracle 可通过 listener.ora 限制远程管理:

开启远程管理限制

ADMIN_RESTRICTIONS_LISTENER = ON

效果:

  • 禁止通过 lsnrctl 从远程修改监听器配置
  • 只能本地修改 listener.ora

二、监听器密码(老版本 Oracle)

⚠️ Oracle 11g 之后已废弃密码机制,改用 OS 认证

旧版本设置密码(仅参考)

lsnrctl
LSNRCTL> change_password
LSNRCTL> set password

三、允许/禁止远程 lsnrctl 管理

1️⃣ 禁止远程管理(推荐)

ADMIN_RESTRICTIONS_LISTENER = ON

2️⃣ 允许本地管理

LOCAL_OS_AUTHENTICATION_LISTENER = ON

四、授予用户执行 lsnrctl 的权限(sudo)

如果其他用户需要执行:

visudo

添加:

username ALL=(oracle) NOPASSWD: /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl

使用:

sudo -u oracle lsnrctl status

五、监听器日志与审计(间接授权)

LOG_FILE_LISTENER = /u01/app/oracle/diag/tnslsnr/listener.log
LOG_STATUS = ON

六、常见误解说明

❌ lsnrctl 不能:

  • 授权数据库用户
  • 管理表空间
  • 执行 SQL

✅ lsnrctl 只能:

  • 启停监听器
  • 查看状态
  • 管理监听配置

七、如果你指的是“数据库授权”

那是 SQL*Plus / SQL 授权,不是 lsnrctl:

GRANT CONNECT, RESOURCE TO user;

如果你能具体说明:

  • Oracle 版本
  • 想“授权”给谁(用户 / 远程主机 / 应用)
  • 报错信息

我可以给你更精确的操作步骤。

0 踩