概述

很多时候我们想实现限制某个IP段登录数据库,比较常用的是用触发器来实现,这里大致介绍下。


触发器实现

create or replace trigger logon_ip_control after logon on database declare ip STRING(30); user STRING(30); begin SELECT SYS_CONTEXT('USERENV','SESSION_USER') into user from dual; SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') into ip from dual; if user='NWPP' THEN IF ip not in ('192.168.219.20','192.168.219.22') THEN raise_application_error(-20001,'User '||user||' is not allowed to connect from '||ip); END IF; END IF; end; /

说明:该触发器对用户EPAY_USER进行了IP限制(只允许'192.168.219.20','192.168.219.22',如果需要设置IP段,用%或?代替即可,如'192.168.219.%‘)。


测试验证

1)从非允许IP地址登陆 (192.168.219.21),连接失败

oracle限制指定用户登录数(分享一个实用的触发器--限制Oracle用户登录IP地址)(1)

2)从允许IP地址登陆(192.168.219.22),连接成功

oracle限制指定用户登录数(分享一个实用的触发器--限制Oracle用户登录IP地址)(2)

3)从本地登陆(192.168.219.23)不受IP限制影响,连接成功

oracle限制指定用户登录数(分享一个实用的触发器--限制Oracle用户登录IP地址)(3)


这个触发器还是挺好用的,大家有空也可以自己测试一下。后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

oracle限制指定用户登录数(分享一个实用的触发器--限制Oracle用户登录IP地址)(4)

,