Java指定windows用户认证实现Sqlserver数据库连接

本文详述了在Java环境下使用Windows认证登录SQLServer的配置过程,包括MyBatis连接设置、Windows用户及SQLServer用户管理、Windows Server服务配置等,并记录了可能出现的登录失败问题及其解决方案,涉及网络段配置、权限设置和DLL文件的添加等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

本文主要记录 java 实现 windows用户登录sqlserver遇到的一些问题与解决方法。


系统环境如下:
jdk1.8 ,sqlserver2016, Windows Server服务器

1.sqlserver client和sqlserver服务器必须在同网段。

例如:server ip 为10.194.12.xxx 。client ip为10.194.xxx

2.client和server需用同用户名密码登录

例如: server name=wcl password=123 。client name=wcl password=123 ,后面会具体讲述配置方法;

3.在java/bin、jre/bin、C:\Windows\System32目录下添加sqljdbc_auth.dll

百度网盘下载 提取码:zlyh
官网下载:sqljdbc_auth.dll
下载解压后找到sqljdbc_6.0.8112.200_chs\sqljdbc_6.0\chs\auth\x64\sqljdbc_auth.dll
注意:可使用java -version 查看JVM, x64表示64位,x86表示32位,如果电脑是64位操作系统则复制auth下的x64文件夹的文件,如果电脑是32位操作系统则复制auth下的x86文件夹的文件


1.mybatis连接设置windows认证

设置sqlserver连接为integratedSecurity=true,表示使用当前windows用户身份验证登录sqlserver数据库,如果需要使用sqlserver用户名密码登录则设置integratedSecurity=false

// windows身份认证数据库连接
<environment id="jdt">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
            <property name="url" value="jdbc:sqlserver://10.194.12.30:1433;DatabaseName=p_eoms;"/>
            <property name="poolPingQuery" value="select now()"/>
            <property name="poolMaximumActiveConnections" value="100"/>
            <property name="poolMaximumIdleConnections" value="5"/>
            <property name="poolPingEnabled" value="true"/>
            <property name="poolPingConnectionsNotUsedFor" value="3600000"/>
        </dataSource>
    </environment>

2.新增windows用户

操作步骤如下:
1.右击我的电脑>管理>所有服务器>选中服务列表中的服务器右击> 计算机管理>本地用户和组>用户>更多操作新建用户>填写用户信息>点击创建。
2.选中组>选择Administrators>右击选择属性>添加>输入数据新创建用户名>点击检查名称>确认>应用>确认

2.1 具体操作示意图如下:
在这里插入图片描述
2.2 新建用户:
在这里插入图片描述
2.3 新增组成员
在这里插入图片描述

3.sqlserver 增加用户

1.选中数据库服务器
2.选择安全性>登录名>新建登录名>windows身份验证>输入用户名检查确认>用户映射选择 用户映射的数据库
注意:数据库添加新用户后,数据库连接失败的话,需要重启数据库再试试。

3.1 具体操作如下:新建登录名
在这里插入图片描述
3.2 用户映射配置,选择映射数据库
在这里插入图片描述

4.windows server设置用户

4.1.win + R键 打开services.msc 找到需要设置的服务,本例中设置tomcat服务
选中Apache Tomcat8.5 服务 右击 选择属性 设置登录账户,登录账户需与上面设置的数据库用户一致。

在这里插入图片描述

5.windows登录sqlserver验证

# 启动数据库连接程序后执行以下sql语句。
SELECT
	login_name,
	Count( 0 ) user_count 
FROM
	Sys.dm_exec_requests dr WITH ( nolock )
	RIGHT OUTER JOIN Sys.dm_exec_sessions ds WITH ( nolock ) ON dr.session_id = ds.session_id
	RIGHT OUTER JOIN Sys.dm_exec_connections dc WITH ( nolock ) ON ds.session_id = dc.session_id 
WHERE
	ds.session_id > 50 
GROUP BY
	login_name 
ORDER BY
	user_count DESC

执行结果如图所示:admin_test为新建用户。
在这里插入图片描述

6.windows认证连接sqlserver bug记录

问题1: nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 登录失败。该登录名来自不受信任的域,不能与 Windows 身份验证一起使用
原因:server与client ip不在同网段

问题2:用户 'NT AUTHORITY\ANONYMOUS LOGON' 登录失败
原因:未将ANONYMOUS 用户添加到Administrators组内。

问题3:没有集成身份验证配置驱动程序问题解决
原因:缺少 sqljdbc_auth.dll 文件


总结

以上就是今天要讲的内容,本文仅仅简单介绍了使用windows认证登录sqlserver实现过程中遇到的一些问题。
如果程序是通过Java -jar xxx.jar 方式运行,需要注册为服务运行的方式,才可以实现使用指定的windows用户认证方式登录sqlserver,或者使用匿名用户(ANONYMOUS )登录就不需要注册未服务了,只需要在windows用户组和sqlserver数据库添加ANONYMOUS用户即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值