场景:Mongo中,在admin库中创建了用户,且对其他库都生效。
命令如下:
db.createUser(
{
user:"userName",
pwd:"password@",
roles:["dbAdminAnyDatabase","userAdmin","dbAdmin","readWriteAnyDatabase"]
}
)
第一个坑位,密码password@中包含特殊符号:@。在mongo中连接的URI中,:与@是特殊符号,若用户名或密码中出现以上两个字符。需要使用%3A替代:,使用%40替换@符号。
第二个坑位,
spring.data.mongodb.uri=mongodb://userName:password%40@localhost:27017/db
使用以上方式连接Mongo会出现认证失败,原因是db库没有这个用户,需要去admin库认证然后才能访问其他数据库。
可以用一下方式:
#地址
spring.data.mongodb.host=127.0.0.1
#端口
spring.data.mongodb.port=27017
#认证的库
spring.data.mongodb.authentication-database=admin
#操作的库
spring.data.mongodb.database=db
#账号
spring.data.mongodb.username=userName
#密码 此时 @符号不替换也可以
spring.data.mongodb.password=password@
百度2个小时,发现,uri也是支持的,先感谢网友吧。
spring.data.mongodb.uri=mongodb://userName:password%40@localhost:27017/db?authSource=admin&authMechanism=SCRAM-SHA-1
以上记录,便于网友节省时间。