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 数据库

基于身份的身份验证不适用于 Azure 存储文件共享

Grails Spring Security 插件身份验证失败

护照身份验证不适用于 nodejs 和 mysql

中间件身份验证不适用于 Web Laravel 5.2

用于身份验证的 Grails Spring Security X509 和用于权限的 LDAP