登录|我要入营|使用QQ帐号登录
首页 > 数据库知识
发帖|
看2199|回0|收藏
驰网飞飞 看全部
2025-8-14 14:28:52
目前有个需求,需要限制个别账号(或者其他权限较高的账号)的登录IP,降低访问的风险。

假设这里的需求是:限制 test账号,只能通过本机和几个固定的个IP登录MSSQL

1、使用sa账号登录

2、创建test登录账号

代码:

  1. CREATE LOGIN test WITH PASSWORD = 'Abcd@1234'
  2. GO

3、创建登录触发器

代码:

  1. drop TRIGGER [tr_limit_ip] ON ALL SERVER ;

  2. CREATE TRIGGER [tr_limit_ip]
  3. ON ALL SERVER WITH EXECUTE AS 'sa'
  4. FOR LOGON
  5. AS
  6. BEGIN


  7. IF ORIGINAL_LOGIN()= 'test'
  8. AND
  9. (SELECT EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'NVARCHAR(15)'))
  10. NOT IN('<local machine>','192.168.31.181','192.168.31.17')
  11.      ROLLBACK;
  12. END;
如果test账号在其他IP尝试登录mssql,则会出现如下报错:

SQL Server中使用登录触发器限制用户的访问地址

在未做限制前,test登录后,可以用sa账号查看到如下登录明细:

代码:

  1. SELECT
  2. a.[session_id],a.[login_time],a.[host_name],
  3. a.[original_login_name],b.[client_net_address]
  4. FROM MASTER.sys.dm_exec_sessions a
  5. INNER JOIN MASTER.sys.dm_exec_connections b
  6. ON a.session_id=b.session_id;

SQL Server中使用登录触发器限制用户的访问地址

感谢您的阅读,服务器大本营-技术文章内容集合站,助您成为更专业的服务器管理员!

服务器大本营

Powered by Discuz! X3.4

首页|简易版|触屏版|电脑版