为了数据库安全,有时候需要限制某些数据库用户只有特定的IP才能登陆,使用触发器,获取登录用户的IP就可以实现上述功能。
SQL语句如下:
CREATE OR REPLACE TRIGGER system.check_ip_addresses
AFTER logon ON DATABASE
BEGIN
IF USER IN ('USER1',
'USER2') THEN
IF sys_context('USERENV',
'IP_ADDRESS') NOT IN ('192.168.0.101',
'192.168.0.102') THEN
raise_application_error(-20000,
'Can not log in from this IP address (' ||
sys_context('USERENV',
'IP_ADDRESS') || ')');
END IF;
END IF;
END;
使用USER1用户登录,会报如下错误,禁止登录: