在 Linux 环境下使用 lsnrctl(Oracle Listener Control),“授权”一般涉及 监听器管理权限控制,而不是像数据库用户那样的 GRANT 授权。下面按常见场景说明。
lsnrctl 必须由 Oracle 软件属主用户(通常是 oracle)执行:
su - oracle
lsnrctl status
✅ 非 oracle 用户执行会报权限不足。
Oracle 可通过 listener.ora 限制远程管理:
ADMIN_RESTRICTIONS_LISTENER = ON
效果:
lsnrctl 从远程修改监听器配置listener.ora⚠️ Oracle 11g 之后已废弃密码机制,改用 OS 认证
lsnrctl
LSNRCTL> change_password
LSNRCTL> set password
ADMIN_RESTRICTIONS_LISTENER = ON
LOCAL_OS_AUTHENTICATION_LISTENER = ON
如果其他用户需要执行:
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 不能:
✅ lsnrctl 只能:
那是 SQL*Plus / SQL 授权,不是 lsnrctl:
GRANT CONNECT, RESOURCE TO user;
如果你能具体说明:
我可以给你更精确的操作步骤。