Fluentd使用Windows身份认证连接SQL Server失败问题咨询
问题排查及解决方案
核心原因
你当前的配置沿用了SQL Server身份认证的逻辑,Windows身份认证(集成认证)的配置规则、鉴权逻辑和SQL身份认证完全不同,不属于程序Bug,是配置疏漏导致的连接失败。
排查步骤
- 配置项修正
Windows集成认证模式下不需要填写username和password参数,必须新增integrated_security true参数开启集成认证模式。如果使用域账号,额外新增domain参数指定你的Windows域名称,本地账号则填SQL Server所在主机名。如果使用SQL Server命名实例,host参数需要补充实例名,格式为主机名\实例名。
正确配置示例如下:<source> @type sql host HOSTNAME\INSTANCE_NAME database db_name adapter sqlserver integrated_security true domain YOUR_DOMAIN_OR_HOSTNAME <table> table tbl_name update_column insert_timestamp </table> </source> <match **> @type stdout </match> - 运行身份权限校验
Windows集成认证取Fluentd进程的运行身份进行鉴权,而非配置文件中填写的账号密码。请确认运行Fluentd的Windows账号(如果是服务运行则是服务关联的账号)已经被添加到SQL Server的登录名列表中,且拥有目标库表的查询权限。 - 跨环境适配校验
如果Fluentd部署在Linux环境下,无法直接使用integrated_security参数走Windows认证,需要先配置Kerberos认证,完成域控信任、krb5.conf配置、kinit获取身份票据后,才能正常建立连接。 - 基础连通性校验
确认SQL Server已经开启TCP/IP协议、允许远程连接,对应端口(默认1433,命名实例为动态端口)已放开防火墙限制。 - 依赖版本校验
确认安装的tiny_tdsgem版本和Fluentd sql插件版本兼容当前SQL Server版本,旧版本可能存在集成认证兼容问题。
内容的提问来源于stack exchange,提问作者Mysterious288
相关产品推荐
相关产品推荐

