Grails - 使用身份验证连接到 MongoDB 数据库
Posted
技术标签:
【中文标题】Grails - 使用身份验证连接到 MongoDB 数据库【英文标题】:Grails - Connect to a MongoDB database using authentication 【发布时间】:2012-05-22 08:44:34 【问题描述】:我正在尝试使用身份验证连接到我的 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
欢迎提出任何建议。 提前致谢。
【问题讨论】:
【参考方案1】:我遇到了同样的问题,所以我可以帮助解释 Mongo 如何进行身份验证。你看到你所做的是你在管理数据库中创建了一个管理员用户,这很棒。但是,您尝试使用不允许的管理员用户直接连接到“mydb”。听起来很混乱?这是因为它是。为了更好地说明这一点,这里有一个简单的练习:
-
像上面一样为 admin db 创建一个用户。
退出 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。
保重
【讨论】:
感谢您的解决方案和详细解释。真的很感激。 感谢您花时间解释。欣赏它。节省了我几个小时的挫败感。以上是关于Grails - 使用身份验证连接到 MongoDB 数据库的主要内容,如果未能解决你的问题,请参考以下文章
远程连接到 MSSQL,使用 Windows 身份验证,JAVA