概述

很多時候我們想實現限制某個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),連接失敗

2)從允許IP地址登陸(192.168.219.22),連接成功

3)從本地登陸(192.168.219.23)不受IP限制影響,連接成功

這個觸發器還是挺好用的,大家有空也可以自己測試一下。後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注一下~

相關文章