`
alfred_long
  • 浏览: 567270 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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 可以设置超级管理员(对所有的数据库都有权限):

 

>show dbs
##看到有如下数据
admin	(empty)
comment	0.203125GB
dbtest	(empty)
foo	0.203125GB
local	(empty)
test	0.203125GB
>use admin
switched to db admin
> db.addUser('admin','12345678') ##添加用户
Mon Nov  5 23:40:00 [FileAllocator] allocating new datafile /data/db/admin.ns, filling with zeroes...
{
	"user" : "admin",
	"readOnly" : false,
	"pwd" : "89e41c6c28d88d42c21fe501d82969ea",
	"_id" : ObjectId("5097ddd00342c63efff3fbfb")
}
##之后运行
>showdbs 
Mon Nov  5 23:45:13 uncaught exception: listDatabases failed:{ "errmsg" : "need to login", "ok" : 0 } ##提示需要登录

添加--auth 启动
./mongod -auth
./mongo 

>use admin
switched to db admin
> db.auth('admin','12345678') ##用添加的账户密码查看
Mon Nov  5 23:49:32 [conn56]  authenticate db: admin { authenticate: 1, nonce: "304f5242601fafa4", user: "admin", key: "58260df384b1146466efca5c90a5ff05" }
1
#1 说明登录成功
> show dbs
admin	0.203125GB
comment	0.203125GB
dbtest	(empty)
foo	0.203125GB
local	(empty)
test	0.203125GB
> use admin
switched to db admin
> show collections;
system.indexes
system.users
> db.system.users.find() ##查找数据
{ "_id" : ObjectId("5097ddd00342c63efff3fbfb"), "user" : "admin", "readOnly" : false, "pwd" : "89e41c6c28d88d42c21fe501d82969ea" }
 

 

2 对某个数据库设置用户权限:

 

###设置了用户和密码以后只能用用户名和密码登录
[root@melon bin]# ./mongo
MongoDB shell version: 2.2.1
connecting to: test
> use admin
switched to db admin
> db.auth('admin','12345678')
1
##使用新的数据库
>use melon ##没有会自动建立
> use melon
switched to db melon
> db.addUser('melon','melon') ##添加新用户和密码
{
	"user" : "melon",
	"readOnly" : false,
	"pwd" : "88e56de28b76bea44329bb61b0832e2f",
	"_id" : ObjectId("5097e906931f14f0bedfde75")
}
> show collections
system.indexes
system.users
>exit
##重新用melon登录

[root@melon bin]# ./mongo
MongoDB shell version: 2.2.1
connecting to: test
> use melon
switched to db melon
> show collections
Tue Nov  6 00:29:48 uncaught exception: error: {
	"$err" : "unauthorized db:melon ns:melon.system.namespaces lock type:0 client:127.0.0.1",
	"code" : 10057
}
##发现无法访问
> db.auth('admin','12345678')
Error: { errmsg: "auth fails", ok: 0.0 }
0 ##超级用户访问也不成
> db.auth('melon','melon')
1  ##单独设置的用户访问成功
> show collections
system.indexes
system.users  
##使用超级用户访问 melon
> use admin
switched to db admin
> db.auth('admin','12345678')
1
> use melon
switched to db melon
> show collections
system.indexes
system.users
##必须先用admin数据库登录,登录成功以后才可以访问melon
  

 在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>";     
}
分享到:
评论

相关推荐

    php windows下安装mongodb服务

    5. **配置PHP连接MongoDB**: - 在PHP中,你可以使用MongoDB的PECL扩展来与数据库交互。下面是一个简单的示例代码: ```php $m = new MongoClient(); $db = $m-&gt;selectDB('mydatabase'); $collection = $db-&gt;...

    很全的_Mongodb数据库学习文档_与_php操作mongodb

    - 手动创建数据文件夹`/data/db/`,并调整权限以允许MongoDB用户读写访问。 - 使用`nohup`命令后台启动MongoDB服务,通过`./mongodb-xxxxxxx/bin/mongo`进入交互式shell进行数据库操作。 #### PHP操作MongoDB实战...

    拓展配置php环境下的mongoDb的数据库文件v5.4-5.6

    - 对于生产环境,应启用身份验证,设置用户和权限。使用`$db-&gt;command()`方法创建用户,如: ```php $cmdResult = $db-&gt;command([ 'createUser' =&gt; 'username', 'pwd' =&gt; 'password', 'roles' =&gt; ['readWrite'...

    mongodb资料

    2. **php操作mongodb和mongodb的权限机制.doc**:这个文档应该详细解释了如何使用PHP的MongoDB驱动进行数据操作,并且涵盖了MongoDB的权限管理,包括用户创建、角色分配和访问控制。 3. **MongoDB权威指南中文版....

    以mongodb为数据库用php做的留言系统

    8. **安全和授权**:确保数据库访问的安全性,可能需要配置用户权限,限制对特定数据库或集合的访问。同时,对于用户输入的数据,应进行验证和清理,防止SQL注入等安全问题。 9. **错误处理**:在编写代码时,要...

    mongodb驱动PHP版

    MongoDB驱动PHP版是连接PHP应用程序与MongoDB数据库的关键组件,允许开发者在PHP环境中执行查询、插入、更新和删除操作。MongoDB是一个流行的开源、分布式文档数据库,它以JSON格式存储数据,提供高性能、高可用性和...

    mongodb 添加用户及权限设置详解

    本篇文章将详细讲解如何在 MongoDB 中添加用户及设置权限。 首先,与 MySQL 等传统的关系型数据库不同,MongoDB 并没有预设的管理员账号。这意味着在启用权限认证之前,你需要自己创建管理员账户。在 MongoDB 的 ...

    mongodb权限设置之添加管理员、普通用户的方法

    总的来说,MongoDB 的权限设置提供了类似关系型数据库的安全控制,通过创建管理员和普通用户,你可以有效地管理数据库的访问权限。启用权限认证并正确配置 PHP 客户端连接,能够确保数据在传输和存储过程中的安全性...

    基于PHP的RockMongo php MongoDB管理工具.zip

    4. **配置**:根据实际环境修改RockMongo的配置文件,例如设置数据库连接信息和权限。 5. **运行**:访问Web服务器上的RockMongo地址,完成首次登录并设置管理员账号。 6. **测试与使用**:验证RockMongo是否能...

    Linux上安装MongoDB PHP扩展.pdf

    确保你的网络连接正常,并且具有管理员权限(sudo)。安装完成后,需要重启PHP服务以应用更改。对于Apache服务器,命令可能是: ```bash sudo service apache2 restart ``` 或者,如果你使用的是Nginx,命令为: ...

    mongodb的安装和使用简介

    另外,如果遇到权限问题,比如提示“拒绝访问”,则需要以管理员权限运行命令提示符,并执行相关操作。 MongoDB的命令行工具(mongo.exe)是MongoDB客户端的交互式界面,它也是一个JavaScript编译器,允许用户执行...

    Laravel开发-laravel-permission-mongodb

    在`config/database.php`中,添加一个新的`mongodb`连接,并设置默认连接为`mongodb`。别忘了在`config/app.php`的`providers`数组中注册`Jenssegers\Mongodb\EloquentServiceProvider::class`。 创建模型后,我们...

    Mongodb 3.2.9开启用户权限认证问题的步骤详解

    在 MongoDB 3.2.9 版本中,虽然默认情况下它允许无认证访问,但为了确保数据安全,启用用户权限认证是非常重要的。以下是一份详细的步骤指南,帮助你了解如何在 MongoDB 3.2.9 中设置用户权限认证。 ### 前言 默认...

    Laravel开发-laravel-mongodb-passport

    在`config/database.php`文件中,添加一个新的连接到`connections`数组,例如命名为`mongodb`,并设置相应的凭据: ```php 'mongodb' =&gt; [ 'driver' =&gt; 'mongodb', 'host' =&gt; env('DB_MONGO_HOST', 'localhost'),...

    RockMongo MongoDB数据库管理工具源码

    2. **易用性**:它提供了一个简洁的图形用户界面(GUI),用户可以通过浏览器访问并执行常见的数据库操作,如创建、查看、更新和删除数据,以及管理集合、索引和用户权限。 3. **安全连接**:RockMongo支持安全的SSL...

    mongodb tool is rockmongo

    在Windows环境下,RockMongo 提供了方便的方式来访问和管理MongoDB实例,无需安装额外的桌面应用程序。通过浏览器访问RockMongo,你可以轻松地完成以下操作: 1. **连接管理**:配置不同的MongoDB服务器地址、端口...

    MongoDB的环境配置.pdf

    在本篇中,我们将深入探讨如何配置MongoDB的环境,包括启动服务、设置环境变量、通过shell连接以及在Windows上配置环境。 1. **启动 MongoDB 服务** 启动MongoDB服务非常简单,只需在MongoDB安装目录的`bin`目录下...

    centos yum 安装 mongodb 以及php扩展

    为了确认PHP的MongoDB扩展已正确安装,可以创建一个简单的PHP脚本来连接到MongoDB服务器并列出所有数据库: ```php &lt;?php $mongo = new MongoClient(); $dbs = $mongo-&gt;listDBs(); print_r($dbs); ``` 运行...

    PHP连接MongoDB示例代码

    在使用MongoDB时,应该注意数据的安全性,合理配置用户权限和认证机制,确保只有授权的用户或应用可以访问和操作数据库。同时在进行数据库设计时,应考虑到MongoDB的文档型数据模型特性,尽量利用其优势,如灵活的...

Global site tag (gtag.js) - Google Analytics