MongoDB 远程连接 权限

这时装好以后应该会自动运行mongod程序,通过"pgrep mongo -l "查看进程是否已经启动

mongodb远程连接配配置,分以下4步。

1,添加管理员账号

$ mongo
> use admin
switched to db admin
> db.addUser('tank','test');
#version 3.3
> db.createUser({user:'admin', pwd:'0rb!t', roles:[{ role: "userAdminAnyDatabase", db: "admin" }] });
db.createUser({user:"admin",pwd:"password",roles:["root"]})

 roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选:

  1. 数据库用户角色:read、readWrite;
  2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
  3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  4. 备份恢复角色:backup、restore;
  5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  6. 超级用户角色:root  //这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
  7. 内部角色:__system

2开启动用户权限认证

vim /etc/mongodb.conf
#bind_ip = 127.0.0.1     //注释此行
auth = true              //将此行前的注释去掉

 3,重启mongodb

/etc/init.d/mongodb restart

 验证账号:

use admin
db.auth("admin", "0rb!t")

4,防火墙开放27017端口开放

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 27017 -j ACCEPT

MongoDB的可视化工具 Robomongo 是开源,免费的MongoDB管理工具
MongoDB 远程连接  权限
 

php客户端连接
MongoDB 远程连接  权限
 

插入

<?php
//链接mongodb
$manager = new MongoDB\Driver\Manager('mongodb://root:[email protected]:27017');

$bulk = new MongoDB\Driver\BulkWrite; //默认是有序的,串行执行
$bulk->insert([ 'user_id' => 2, 'real_name' => '中国' ]);
$bulk->insert([ 'user_id' => 3, 'real_name' => '中国人' ]);
$manager->executeBulkWrite('admin.box', $bulk); //执行写入admin数据库下的box集合

 查询

<?php
//链接mongodb
$manager = new MongoDB\Driver\Manager('mongodb://root:[email protected]:27017');

//查询
$filter  = [ 'user_id' => [ '$gt' => 0 ] ]; //查询条件 user_id大于0
$options = [
    'projection' => [ '_id' => 0 ], //不输出_id字段
    'sort'       => [ 'user_id' => -1 ] //根据user_id字段排序 1是升序,-1是降序
];
$query   = new MongoDB\Driver\Query($filter, $options); //查询请求
$list    = $manager->executeQuery('admin.box', $query); // 执行查询 location数据库下的box集合

echo "<pre>";
foreach ($list as $document) {
    print_r($document);
}

 修改

<?php

$manager = new MongoDB\Driver\Manager('mongodb://root:[email protected]:27017');

$bulk = new MongoDB\Driver\BulkWrite; //默认是有序的,串行执行
//$bulk = new MongoDB\Driver\BulkWrite(['ordered' => flase]);//如果要改成无序操作则加flase,并行执行
$bulk->update(
    [ 'user_id' => 2 ],
    [ '$set' => [ 'real_name' => '中国国' ]
    ]);
//$set相当于mysql的 set,这里和mysql有两个不同的地方,
//1:字段不存在会添加一个字段;
//2:mongodb默认如果条件不成立,新增加数据,相当于insert


//如果条件不存在不新增加,可以通过设置upsert
//db.collectionName.update(query, obj, upsert, multi);

$bulk->update(
    [ 'user_id' => 5 ],
    [
        '$set' => [ 'fff' => '中国国' ]
    ],
    [ 'multi' => true, 'upsert' => false ]
//multi为true,则满足条件的全部修改,默认为true,如果改为false,则只修改满足条件的第一条
//upsert为 treu:表示不存在就新增
);
$manager->executeBulkWrite('admin.box', $bulk);

 删除

<?php

$manager = new MongoDB\Driver\Manager('mongodb://root:[email protected]:27017');

$bulk = new MongoDB\Driver\BulkWrite; //默认是有序的,串行执行
$bulk->delete([ 'user_id' => 5 ]);//删除user_id为5的字段
$manager->executeBulkWrite('admin.box', $bulk);

相关推荐