mongodb访问权限设置及PHP连接
默认mongodb链接,是可以访问任何数据的.
如果是在生产环境中,这样做必然导致很多问题,通过尝试,和查找资料,整理如下(参考http://www.php.net/manual/en/mongo.connecting.php):
?
常用命令:
?
show dbs ? ? 相当于 ? show databases
?
show collections ?相当于 ?show tables?
?
use ?用法相同
?
在添加用户以后每个数据库中都会有
?
system.indexes
system.users
但是,admin中设置的user为超级管理员,可以查看其他的数据库(必须在use admin 数据库后,登录,可以查看其他数据库的数据。直接use test数据库,用超级管理员是无法登录的)
单独的数据库也可以设置单独的访问用户;具体如下
?
?
?
1 可以设置超级管理员(对所有的数据库都有权限):
?
??
2 对某个数据库设置用户权限:
?
?在PHP中访问方式
?
?
<?php##1 使用超级用户连接mongodb/*mongodb连接*/$m = new Mongo("mongodb://admin:12345678@192.168.138.35:27017");/*选择melon数据库*/$db = $m->melon;/*集合*/$collection = melonco;/*选择数据库里面的集合,相当于表*/$collection = $db->$collection;$array = array('name'=>'melon','age'=>'24','sex'=>'Male','birth'=>array('year'=>'1988','month'=>'07','day'=>'13'));$collection->insert($array);$cursor = $collection->find();foreach ($cursor as $id => $value) { echo "$id: "; var_dump($value); echo "<br>"; }###2 使用数据库用户/*mongodb连接*/$m = new Mongo("192.168.138.35:27017");/*选择comment*/$db = $m->melon;/*连接数据库*/$db->authenticate("melon", "melon");/*选择t数据库里面集合,相当于表*/$collection = $db->melonco;$array = array('name'=>'melon_son','age'=>'0','sex'=>'Male','birth'=>array('year'=>'201X','month'=>'07','day'=>'13'));$collection->insert($array);$cursor = $collection->find();foreach ($cursor as $id => $value) { echo "$id: "; var_dump($value); echo "<br>"; }