MongoDB创建数据库管理员账号

启动MongoDB服务时,在没有指定--auth参数情况下,不需要任何验证就可以对数据库进行任意操作。为了安全,一般需要为数据库创建相应的角色,为角色分配相应的权限,在启动MongoDB时指定--auth参数。

启动MongoDB服务,进入MongoDB Shell控制台,切换至admin数据库,创建数据库管理员用户,其指令如下(以#开头的为注释说明,非输入控制台内容,每条指令以Enter键结束):

MongoDB创建数据库管理员用户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 切换至admin数据库。
# 也可以使用db = db.getSiblingDB('admin')代替use admin。
use admin
 
# 创建管理员用户,并指定其权限。
db.addUser({
   user : 'root' ,
   pwd : '123456' ,
   roles : [
     'clusterAdmin' ,
     'dbAdminAnyDatabase' ,
     'userAdminAnyDatabase' ,
     'readWriteAnyDatabase'
   ]
})

关闭MongoDB服务,重启MongoDB服务并加上--auth参数,进入MongoDB Shell控制台,切换至admin数据库,敲入show collections指令,此时系统报错:error : {"$err" : "not authorized for query on admin.system.namespaces", "code" : 16550}。这是需要认证的缘故,在控制台输入如下指令进行认证:

MongoDB用户认证
1
2
3
# 进行用户认证,输入上面创建的用户名及密码。
# 也可以使用db.auth('root', '123456')代替下面指令。
db.auth({user : 'root' , pwd : '123456' })

认证通过后,重新敲入show collection指令,此时不再报错,可以看到指令相应的输出结果。

接下来,为指定数据库创建一般用户角色,用于程序读取、修改数据库。假如现有blog数据库,要为其创建用户名为admin、密码为123456,拥有CRUD(增查改删)权限,指令如下:

MongoDB数据库用户创建
1
2
3
4
5
6
7
8
9
# 切换至blog数据库。
use blog
 
# 创建admin用户。
db.addUser({
   user : 'admin' ,
   pwd : '123456' ,
   roles : [ 'readWrite' ]
})

PHP连接至blog数据库代码示例(PHP必须安装MongoDB扩展,若想了解PHP如何安装MongoDB扩展,请参阅:PHP使用MongoDB扩展):

PHP连接MongoDB
1
2
3
4
5
6
7
<?php
$mongo = new MongoClient( 'mongodb://admin:123456@localhost:27017/blog' );
 
/**
  * 其他代码。
  */
?>

说明:不同MongoDB版本在创建数据库用户角色会存在细微的差别,本文使用的是MongoDB 2.4.4版本。若想了解更多MongoDB用户权限,请参阅MongoDB官方手册:User Privilege Roles in MongoDB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值