Spring Boot连接MongoDB遭遇MongoSecurityException认证异常
解决Spring Boot连接MongoDB的认证异常问题
从你提供的日志和配置来看,应用已经成功和MongoDB建立了连接,但在用户认证环节失败,抛出了MongoSecurityException。下面是几个针对性的排查和解决步骤:
1. 补充认证数据库配置
MongoDB的用户是与特定数据库绑定的——通常管理员用户是在admin数据库下创建的,但你的配置里没有指定认证时使用的数据库,Spring Boot会默认用你配置的业务数据库(VanGuardAuth_DB_AWS_0001)去做认证,这就会导致失败。
修改你的application.properties,添加authentication-database配置:
spring: data: mongodb: host: localhost port: 27017 database: VanGuardAuth_DB_AWS_0001 username: myUserAdmin password: sce@3456@345 authentication-database: admin
2. 处理密码中的特殊字符
你的密码包含@符号,在application.properties文件中这类特殊字符可能会被解析错误,导致实际传递给MongoDB的密码不正确。这种情况下,推荐使用URI格式配置连接信息,记得把@转义为%40:
spring: data: mongodb: uri: mongodb://myUserAdmin:sce%403456%40345@localhost:27017/VanGuardAuth_DB_AWS_0001?authSource=admin
3. 验证用户权限是否正确
如果上面两步都没用,先手动验证你的用户是否能正常访问目标数据库:
打开终端执行以下命令登录MongoDB:
mongo -u myUserAdmin -p sce@3456@345 --authenticationDatabase admin VanGuardAuth_DB_AWS_0001
如果登录失败,说明用户没有该数据库的访问权限,需要给用户授权:
use admin db.auth("myUserAdmin", "sce@3456@345") # 给用户授予目标数据库的读写权限 db.grantRolesToUser("myUserAdmin", [{ role: "readWrite", db: "VanGuardAuth_DB_AWS_0001" }])
内容的提问来源于stack exchange,提问作者Vijay G
相关产品推荐
相关产品推荐

