Mongodb身份验证不适用于grails,而是来自控制台
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mongodb身份验证不适用于grails,而是来自控制台相关的知识,希望对你有一定的参考价值。
我想在我的mongodb中使用身份验证。所以我创建了一个用户。我可以在命令行上连接哪个用户并插入数据而没有任何问题。
但是,当我想在grails中使用此用户时,我收到此错误:
{ "serverUsed" : "127.0.0.1:27017" , "ok" : 0.0 , "errmsg" : "auth failed" , "code" : 18 , "codeName" : "AuthenticationFailed"}
当我从命令行连接时,一切正常:
mongo --port 27017 -u "mongouser" -p "pwd" mydb
我在Grails中的代码:
MongoCredential credential = MongoCredential.createMongoCRCredential("mongouser", "mydb", "pwd".toCharArray())
def mongoClient = new MongoClient( new ServerAddress(host, port), [credential ] )
gMongoCon = new GMongo(mongoClient)
这有什么不对?
答案
在Config.groovy或外部配置中添加您的mongo凭据,如下所示,
grails
{
mongo
{
host = "YOUR_HOST_NAME_OR_IP_ADDRESS" // e.g localhost
port = 27017
username = "mongouser" //Username
password = "pwd" //password
databaseName = "mydb" //Database name
}
}
注意:如果应用程序和mongo位于不同的服务器上,请从/etc/mongod.conf更改bind_ip。
另一答案
此解决方案有效:
MongoCredential.createCredential(username, datatable, password)
以上是关于Mongodb身份验证不适用于grails,而是来自控制台的主要内容,如果未能解决你的问题,请参考以下文章
Grails - 使用身份验证连接到 MongoDB 数据库