我正在尝试使用mongodb进行身份验证并获得以下错误:
com.mongodb.MongoCommandException:命令失败,错误13:'未经授权短信执行命令。
我的数据库名称是“sms”。
我的mongoTemplate bean如下所示:
<bean id="mongo" class="com.mongodb.Mongo">
<constructor-arg name="host" value="${mongodb_host}" />
<constructor-arg name="port" value="${mongodb_port}" />
</bean>
<bean id="mongoCredentials" class="org.springframework.data.authentication.UserCredentials">
<constructor-arg name="username" value="${mongodb_username}"> </constructor-arg>
<constructor-arg name="password" value="${mongodb_password}" ></constructor-arg>
</bean>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongo" ref="mongo" />
<constructor-arg name="databaseName" value="${mongodb_name}" />
<constructor-arg name="userCredentials" ref="mongoCredentials"/>
</bean>
我使用以下命令在mongo上创建用户。
use sms
db.runCommand({ createRole: "myAdmin",
privileges: [
{ resource: { db: "sms", collection: "" }, actions: [ "find", "update", "insert", "remove" ] },
],
roles: [
{ role: "readWrite", db: "sms" }
],
writeConcern: { w: "majority" , wtimeout: 5000 }
})
db.createUser({"user":"user1","pwd":"admin123","roles":[{"role":"readWrite","db":"sms"}]})
db.auth("user1","admin123") --> gave me 1.
我可以通过RoboMongo客户端连接到我的数据库并创建集合并成功添加文档,但是无法通过我的Java代码。请帮我解决这个问题。