You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vault配置MongoDB连接失败:SCRAM-SHA-1认证失败但Mongo Shell可登录

问题:Vault配置MongoDB SCRAM-SHA-1认证失败(Shell连接正常)

我可通过Mongo Shell连接MongoDB路由器Pod的admin数据库(使用SCRAM-SHA-1认证),但用相同参数配置Vault的MongoDB数据库连接时,出现「无法使用SCRAM-SHA-1机制认证」的错误。

Mongo Shell成功连接的命令及输出

root@nexus-config-mongo-cluster-router-node1-rc-fcwnj:/# mongo --verbose mongodb://nexus-global-admin-user:<password>@mongo-cluster-router-node1-svc.cluster.local:27017/admin?authMechanism=SCRAM-SHA-1
MongoDB shell version v4.2.2
connecting to: mongodb://nexus-config-mongo-cluster-router-node1-svc.nexusdash.svc.cluster.local:27017/admin?authMechanism=SCRAM-SHA-1&compressors=disabled&gssapiServiceName=mongodb
2023-03-16T18:27:46.128+0000 D1 NETWORK  [js] creating new connection to:mongo-cluster-router-node1-svc.cluster.local:27017
2023-03-16T18:27:46.134+0000 D1 NETWORK  [js] connected to server mongo-cluster-router-node1-svc.cluster.local:27017
2023-03-16T18:27:46.134+0000 D1 NETWORK  [js] connected connection!
Implicit session: session { "id" : UUID("9de4c2a0-a279-4f9c-ac1e-bd3ff99051ce") }
MongoDB server version: 4.2.2
mongos> show dbs
Global-aegis        0.001GB
Global-griffin      0.001GB
Global-sorcerer     0.002GB
Global-spartan      0.002GB
admin               0.000GB
config              0.002GB
nexusdash-ndi       3.324GB
nexusdash-sitehub   0.000GB
nexusdash-thanos    0.000GB

mongos> use admin
switched to db admin
mongos> show collections
system.users
system.version

Vault配置命令及错误输出

root@vault-0-0:/# vault write database/config/nexus_config_mongodb \
    plugin_name=mongodb-database-plugin \
    allowed_roles="test-mongodb-nexusdash-aquarius-readwrite" \
    connection_url="mongodb://{{username}}:{{password}}@mongo-cluster-router-node1-svc.cluster.local:27017/admin?authMechanism=SCRAM-SHA-1" \
    username="nexus-global-admin-user****" \
    password="replaced with password" \
    username_template="{{.RoleName}}-user"
Error writing data to database/config/nexus_config_mongodb: Error making API request.

URL: PUT https://vault-0.default.svc.cluster.local:8200/v1/database/config/nexus_config_mongodb
Code: 400. Errors:

* error creating database object: failed to verify connection: connection() error occured during connection handshake: auth error: sasl conversation error: unable to authenticate using mechanism "SCRAM-SHA-1": (AuthenticationFailed) Authentication failed.

排查方案

  • 验证用户名/密码准确性
    确认Vault命令中username的星号占位已替换为完整正确的用户名,password为实际有效密码。若密码包含@、&等特殊字符,需做URL编码(比如@替换为%40)。

  • 检查插件版本兼容性
    确认Vault的mongodb-database-plugin版本与MongoDB 4.2.2兼容,旧版本插件可能存在SCRAM-SHA-1支持缺陷,尝试升级插件至匹配版本。

  • 修正连接URL细节

    1. 补充完整FQDN:Shell连接实际使用的是mongo-cluster-router-node1-svc.nexusdash.svc.cluster.local,Vault中需确保使用相同的完整主机名(避免跨namespace DNS解析失败)。
    2. 显式指定认证源:在连接URL中添加authSource=admin参数,确保插件明确使用admin数据库进行认证,修改后URL示例:
      connection_url="mongodb://{{username}}:{{password}}@mongo-cluster-router-node1-svc.nexusdash.svc.cluster.local:27017/admin?authMechanism=SCRAM-SHA-1&authSource=admin"
      
  • 确认用户权限与认证机制
    在Mongo Shell中执行以下命令,验证用户的SCRAM配置及权限:

    use admin
    db.getUser("nexus-global-admin-user")
    

    确保用户的authenticationMechanisms包含SCRAM-SHA-1,且拥有足够权限(如userAdminAnyDatabase,用于Vault生成动态用户)。

  • 测试Vault到MongoDB的网络连通性
    在Vault Pod内执行以下命令,确认网络可达:

    nc -zv mongo-cluster-router-node1-svc.nexusdash.svc.cluster.local 27017
    

    若连接失败,检查网络策略、防火墙规则是否阻止了Vault对MongoDB端口的访问。

内容的提问来源于stack exchange,提问作者Anish Mathew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 18:13:21