我正在尝试向我的 MongoDB 添加授权。 我正在使用 MongoDB 2.6.1 在 Linux 上完成所有这些工作。 我的 mongod.conf 文件采用旧的兼容性格式 (这是安装时附带的)。
1) 我按照 (3) 中的描述创建了管理员用户
http://docs.mongodb.org/manual/tutorial/add-user- administrator/
2)然后我通过取消注释这一行来编辑 mongod.conf
auth = true
3)最后我重新启动了 mongod 服务并尝试使用以下方式登录:
/usr/bin/mongo localhost:27017/admin -u sa -p pwd
4)我可以连接,但连接时会这样说。
MongoDB shell version: 2.6.1 connecting to: localhost:27017/admin Welcome to the MongoDB shell! The current date/time is: Thu May 29 2014 17:47:16 GMT-0400 (EDT) Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" }
5)现在看来sa我创建的这个用户根本没有权限。
sa
root@test02:~# mc MongoDB shell version: 2.6.1 connecting to: localhost:27017/admin Welcome to the MongoDB shell! The current date/time is: Thu May 29 2014 17:57:03 GMT-0400 (EDT) Error while trying to show server startup warnings: not authorized on admin to execute command { getLog: "startupWarnings" } [admin] 2014-05-29 17:57:03.011 >>> use admin switched to db admin [admin] 2014-05-29 17:57:07.889 >>> show collections 2014-05-29T17:57:10.377-0400 error: { "$err" : "not authorized for query on admin.system.namespaces", "code" : 13 } at src/mongo/shell/query.js:131 [admin] 2014-05-29 17:57:10.378 >>> use test switched to db test [test] 2014-05-29 17:57:13.466 >>> show collections 2014-05-29T17:57:15.930-0400 error: { "$err" : "not authorized for query on test.system.namespaces", "code" : 13 } at src/mongo/shell/query.js:131 [test] 2014-05-29 17:57:15.931 >>>
问题是什么? 我将整个过程重复了 3 次, 我认为我按照 MongoDB 文档中的说明完成了所有操作。但它不起作用。 我期待这个sa用户被授权做任何事情,这样 他就可以创建其他用户并给予他们更具体的权限。
我也在为同样的问题摸不着头脑,并且在添加第一个管理员用户时将角色设置为 root 后一切正常。
use admin db.createUser( { user: 'admin', pwd: 'password', roles: [ { role: 'root', db: 'admin' } ] } ); exit;
如果您已经创建了admin用户,您可以像这样更改角色:
admin
use admin; db.grantRolesToUser('admin', [{ role: 'root', db: 'admin' }])
有关完整的身份验证设置参考,请参阅我在互联网上进行数小时研究后编制的步骤。