如何安装在CentOS 6.5中安装Mongodb,请参考:[原创]CentOS 6.5编译C++_MongoDB驱动
安装完成mongodb之后,默认是没有带权限的,为了安全起见,我们增加一个权限。
首先关闭mongodb服务:
#关闭mongodb服务 service mongod stop
然后编辑/etc/mongod.conf文件,增加如下,其实也就是打开权限认证:
security: authorization: "enabled"
如下图所示:
然后保存退出,重启mongodb服务:
#启动mongodb服务 service mongod start
这样一来,我们的mongodb便运行在带权限认证环境中。
在终端中执行如下命令:
[root@localhost ~]# mongo
MongoDB shell version: 3.2.8
connecting to: test
> show dbs
2017-05-31T22:36:24.536+0800 E QUERY [thread1] Error: listDatabases failed:{
"ok" : 0,
"errmsg" : "not authorized on admin to execute command { listDatabases: 1.0 }",
"code" : 13
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:761:19
shellHelper@src/mongo/shell/utils.js:651:15
@(shellhelp2):1:1
>
这个时候,我们便发现show dbs命令无法被正确的执行,因为没有权限去执行。
下面我们在mongo shell中增加一个用户:
首先使用admin数据库,一定是这个名字,官方以这个数据库为管理账户数据库,不可更名。
use admin
然后我们创建一个user,通过如下命令:
db.createUser({ user: "admin" , pwd: "admin", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase", "clusterAdmin", "clusterMonitor"]});
这样一来,我们就创建了一个用户名为admin,密码为admin的用户,其中admin的权限是:
"userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase", "clusterAdmin", "clusterMonitor"
参考:
这些相关的权限,基本如下:
dbAdmin 在db范围内包括下面的权限:
- collStats
- dbHash
- dbStats
- find
- killCursors
- listIndexes
- listCollections
- dropCollection 和 createCollection on system.profile only
userAdmin在db范围内包括如下权限:
- changeCustomData
- changePassword
- createRole
- createUser
- dropRole
- dropUser
- grantRole
- revokeRole
- viewRole
- viewUser
readAnyDatabase 对所有数据库中的collection可读,同时包含listDatabases权限
readWriteAnyDatabase 对所有数据库中的collection可读且可写,同时包含listDatabases权限
userAdminAnyDatabase 对所有数据库拥有userAdmin角色,同时包含listDatabases权限
dbAdminAnyDatabase 对所有数据库拥有dbAdmin角色,同时包含listDatabases权限
cluster相关的权限 clusterMonitor、hostManager、clusterManager、clusterAdmin
这个地方可以参考官方文档:https://docs.mongodb.com/manual/reference/built-in-roles/#all-database-roles
创建完成User之后,我们来进行一下认证,通过如下命令,首先要切换到admin集合:
use admin
db.auth("admin", "admin");
这样一来,我们再执行show dbs命令,便可以正确看到返回结果了。
当然我们还可以创建更多的用户,具体请参考官方文档:https://docs.mongodb.com/manual/reference/method/db.createUser/#db-createuser
文章的脚注信息由WordPress的wp-posturl插件自动生成