我正在尝试使用身份验证连接到我的 MongoDB。
我在我的 Mongo 服务器上这样做了:
use admin
db.addUser('adminLogin','adminPassword')
db.shutdownServer()
exit
然后我再次启动我的服务器发出mongod --auth
我在 DataSource.groovy 中设置数据库配置如下:
grails {
mongo {
host = "localhost"
port = 27017
username = "adminLogin"
password = "adminPassword"
databaseName = "my DB name"
options {
autoConnectRetry = true
connectTimeout = 300
}
}
}
当我启动我的应用程序时,我收到以下错误消息:
ERROR context.GrailsContextLoader - Error executing bootstraps: Error creating bean
with name 'mongoDatastore': FactoryBean threw exception on object creation; nested
exception is org.springframework.data.mongodb.CannotGetMongoDbConnectionException:
Failed to authenticate to database
任何建议都是非常受欢迎的。
提前致谢。
我遇到了同样的问题,所以我可以帮助解释 Mongo 如何进行身份验证。您看到您所做的是在管理数据库中创建了一个管理员用户,这很棒。但是,您尝试直接使用管理员用户连接到“mydb”,这是不允许的。听起来很混乱?这是因为它是。为了更好地说明这一点,这里有一个简单的练习:
- 像上面一样为管理数据库创建一个用户。
- 退出 mongo shell
- 运行以下
mongo
use myDBname
db.auth("adminlogin", "adminpwd")
那会失败的。但试试这个吧。
mongo
use admin
db.auth("adminlogin", "adminpwd")
use myDBname
这将起作用,因为您使用管理上下文切换到此数据库并且没有尝试直接连接到它。
因此,要完成这项工作,您所需要做的就是直接连接到您想要的数据库,并在该数据库中创建一个用户,如下所示:
mongo
use myDBname
db.addUser("dblogin", "dbpwd")
用这个更新你的 grails 配置文件,我敢打赌它会起作用。
请注意,最后一部分是您的答案并解决了您的问题,但由于我为此苦苦挣扎并以艰难的方式找到了它,我认为上下文确实有助于更好地理解 mongo auth。
小心
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)