mongodb安装配置



Grails-使用认证连接到MongoDB数据库 (1)

我正尝试使用身份验证连接到我的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”。 声音混乱? 这是因为它。 为了更好地说明这一点,这是一个简单的练习

  1. 像上面一样为admin数据库创建一个用户。
  2. 退出mongo shell
  3. 运行以下
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认证。

保重





database