澳门新浦京电子游戏MongoDB学习笔记(二)访问权限

1.3版本的PHP MongoDB
driver重写了连接处理库,和以前版本相比,在持久连接和连接池方面,都有了重大的变化。

要访问数据库,那么对访问权限的设置是必须的!

详细图解,记录 win7 64 安装mongo数据库的过程。安装的版本是
mongodb-win32-x86_64-2008plus-ssl-3.4.1-signed。

1.2版本的连接管理

1.2版本的驱动引入了连接池,在执行任何查询时,都会从连接池中请求一个连接,完成之后再归还给连接池。这里的完成是指持有该连接的变量离开了它的作用域,下面是一个示例。

最简单的版本:

<?php
$m = new MongoClient();    // ← 从连接池请求连接
$c = $m->demo->test;
$c->insert( array( 'test' => 'yes' ) );
?>

← $m离开作用域,连接归还给连接池

在函数中:

<?php
function doQuery()
{
        $m = new MongoClient();    // ← 从连接池请求连接
        $c = $m->demo->test;
        $c->insert( array( 'test' => 'yes' ) );
} // ← $m离开作用域,连接归还给连接池
?>

在某些情况下,系统可能会产生大量的连接,比如在ORMs/ODMs的某个复杂结构中引用连接对象,如下例子:

<?php
for ( $i = 0; $i < 5; $i++ )
{
        $conns[] = new MongoClient();
}// ← 现在有5个连接
?>

1、启用权限控制(-auth),当启用MongoDB数据库服务时,对参数的设置可以决定是否启用权限控制
   不开启: mongod -dbpath=D:/MongoDB/Data
-logpath=D:/MongoDB/Log/test.log
    开启: mongod -dbpath=D:/MongoDB/Data
-logpath=D:/MongoDB/Log/test.log -auth

我下载的源文件:mongodb-win32-x86_64-2008plus-ssl-3.4.1-signed
我的系统:win 7 64 bit 8g内存
为了方便下载,我把我当时下载的这个包,放在某度的云盘上。
链接: 密码:fi3k

1.3版本的连接管理

在1.3版本中,连接管理做了很大改动。每个worker进程(线程、PHP-FPM或Apache
worker)中,驱动把连接管理和Mongo*对象分离,降低驱动的复杂度。下面以单个节点的MongoDB实例来说明驱动如何处理连接。

当一个worker进程启动,MongoDB驱动会为之初始化连接管理器管理连接,并且默认没有连接。

在第一个请求调用new
MongoClient();时,驱动创建一个新连接,并且以一个哈希值标识这个连接。这个哈希值包括以下参数:主机名、端口,进程ID和可选的replica
set名,如果是密码验证的连接,则还包括数据库名、用户名和密码的哈希值(对于密码验证的连接,我们后面再详细讨论)。调用MongoClient::getConnections()方法,可以查看连接对应的哈希值:

<?php
$m = new MongoClient( 'mongodb://whisky:27017/' );
var_dump( $m->getConnections()[0]['hash'] );
?>

输出:

string(22) “whisky:27017;-;X;22835″

输出中的”-”表示该连接不属于某个replica
set,”X”是没有用户名、数据库和密码时的占位符,22835是当前进程的进程ID。

然后该连接会在连接管理器中注册: 澳门新浦京电子游戏 1

在需要连接的任何时候,包括插入、删除、更新、查找或执行命令,驱动都会向管理器请求一个合适的连接来执行。请求连接时会用到new
MongoClient()的参数和当前进程的ID。每个worker进程/线程,连接管理器都会有一个连接列表,而每个PHP
worker同一时刻,只会运行一个请求,因此和每个MongoDB之间只需要一个连接,不断重用,直到PHP
worker终止或显式调用MongoClient::close()关闭连接。

    由上面的两条开启服务的命令来看,是由启动命令mongod的参数
-auth决定,如果不开启,那么对数据库都可以访问。如果开启,那么就需要输入用户名和密码(-auth(‘用户’,’密码’))来进行授权,如果正确的则返回1,否则返回0

下载和安装,图有点多,不怕啰嗦,就怕不够。

Replica sets

在存在复制集的环境中,情形有点不一样。new
MongoClient()的连接字符串中,需要指定多个hosts,并标示当前正在实用复制集:

$m = new
MongoClient(“mongodb://whisky:13000,whisky:13001/?replicaSet=seta”);

其中的replicaSet参数不能省略,否则驱动会认为你是准备连接三个不同的mongos进程。

在实例化时,驱动会检查复制集的拓扑结构。下面例子的输出,显示在调用new
MongoClient()之后,复制集中所有可见的数据节点都会在管理器中注册一个连接:

<?php
$m = new MongoClient( 'mongodb://whisky:13001/?replicaSet=seta' );
foreach ( $m->getConnections() as $c )
{
    echo $c['hash'], "n";
}
?>

输出:

whisky:13001;seta;X;32315 whisky:13000;seta;X;32315

虽然连接字符串中没有whisky:13000节点,但是管理器中已经注册了两个连接:

澳门新浦京电子游戏 2

管理器不仅包含连接的哈希值和TCP/IP
socket,还保存哪个节点是主节点,以及每个节点的“距离”。下面的脚本显示了这些额外的信息;

<?php
$m = new MongoClient( 'mongodb://whisky:13001/?replicaSet=seta' );
foreach ( $m->getConnections() as $c )
{
    echo $c['hash'], ":n",
        " - {$c['connection']['connection_type_desc']}, ",
        "{$c['connection']['ping_ms']} msn";
}
?>

输出:

whisky:13001;seta;X;5776: – SECONDARY, 1 ms whisky:13000;seta;X;5776:
– PRIMARY, 0 ms

驱动把操作分为两种类型:写操作,包括插入、更新、删除和命令;读操作,包括find和findOne。默认情况下,如果没有设置读偏好参数,管理器会一直返回主节点的连接。读偏好参数可以通过setSlaveOkay()设置,也可以在连接字符串中设置:

$m = new MongoClient("mongodb://whisky:13000,whisky:13001/?replicaSet=seta&readPreference=secondaryPreferred");

加上这些参数后,连接字符串变得特别长,因此PHP驱动允许将选项放在数组中,作为第二个参数传入:

$options = array(
        'replicaSet' => 'seta',
        'readPreference' => 'secondaryPreferred',
);
$m = new MongoClient("mongodb://whisky:13000,whisky:13001/", $options);

对于每个操作,驱动向管理器请求获取一个合适的连接。对于写操作,会一直返回主节点的连接;对于读操作,如果辅助节点可用且“距离”不远的话,则会返回该辅助节点的连接。

2、既然要输入用户名和密码来进行授权,那么这个用户名和密码是如何来的呢?
  
默认情况下,数据库中是没有用户名和密码的,所以即使在开启服务时开启了权限控制,也是不需要任何用户名和密码就可以访问每个数据库。这也是必须的,因为我们要给数据库设置密码就必须要先可以访问数据库,这时就可以对我们的超级管理员某数据库管理员设置用户名和密码。

澳门新浦京电子游戏 3

验证的连接

如果MongoDB启用验证功能,那么连接的哈希值会包含验证相关的哈希值。这样不同脚本,使用不同的用户名、密码连接同一个MongoDB上的不同的数据库时,能够相互区分,而不会误用连接。下面示例使用admin用户名连接admin数据库,然后观察hash值的变化:

<?php
$m = new MongoClient( 'mongodb://admin:admin@whisky:27017/admin' );
var_dump( $m->getConnections()[0]['hash'] );
?>

输出:

string(64)
“whisky:27017;-;admin/admin/bda5cc70cd5c23f7ffa1fda978ecb class=”wp_keywordlink”>D30;8697″

以前示例中的”X”部分已经替换为一个包含数据库名admin、用户名admin和哈希值bda5cc70cd5c23f7ffa1fda978ecbd30,该哈希值是根据用户名、数据库名和密码哈希值计算得来。

为了验证能够正确工作,需要在连接字符串中包含数据库名,否则会默认为admin。

在建立连接后要使用数据库,需要先选择该数据库,如:

$collection = $m->demoDb->collection; $collection->findOne();

如果选择的数据库是连接字符串中指定的数据库,或者连接字符串中的数据库是admin,那么一切都会正常运行。否则,驱动会创建一个新的连接,从而防止验证被绕过,如下所示:

<?php
$m = new MongoClient( 'mongodb://user:user@whisky:27017/test' );

$db = $m->test2;
$collection = $db->collection;
var_dump( $collection->findOne() );
?>

输出:

Fatal error: Uncaught exception ‘MongoCursorException’ with message
‘whisky:27017: unauthorized db:test2 ns:test2.collection lock type:0
client:127.0.0.1′ in …/mongo-connect-5.php.txt:6

因为我们的连接并没有执行test2数据库的授权验证,因而失败。如果我们执行验证,就会正常运行:

<?php
$m = new MongoClient( 'mongodb://user:user@whisky:27017/test' );

$db = $m->test2;
$db->authenticate('user2', 'user2' );
$collection = $db->collection;
$collection->findOne();

foreach ( $m->getConnections() as $c )
{
    echo $c['hash'], "n";
}
?>

输出:

whisky:27017;-;test/user/602b672e2fdcda7b58a042aeeb034376;26983
whisky:27017;-;test2/user2/984b6b4fd6c33f49b73f026f8b47c0de;26983

现在管理器中有两个已验证的连接:

澳门新浦京电子游戏 4

顺便提一句,如果你打开了E_DEPRECATED级别的错误提示,则会看到:

Deprecated: Function MongoDB::authenticate() is deprecated in
…/mongo-connect-6.php.txt on line 5

驱动建议通过创建两个MongoClient对象完成该类任务:

<?php
$mTest1 = new MongoClient( 'mongodb://user:user@whisky:27017/test', array( 'connect' => false ) );
$mTest2 = new MongoClient( 'mongodb://user2:user2@whisky:27017/test2', array( 'connect' => false ) );

$mTest1->test->test->findOne();
$mTest2->test2->test->findOne();

foreach ( $mTest2->getConnections() as $c )
{
    echo $c['hash'], "n";
}
?>

单个MongoDB服务器能支持的并发连接相当有限,如果使用PHP-FPM的话,每个worker进程有自己独立的连接池,那么很容易达到连接数的上限。因此,在生产环境中,不管有没有使用复制集,都要部署mongos,然后PHP-FPM连接mongos,这样可以减少mongod的连接数,并且PHP-FPM和mongos之间可以使用短连接(即每个请求结束时都显式调用close函数关闭MongoDB连接)。

3、超级管理员和某数据库的管理员
  
超级管理员就是在admin数据库中添加的用户名和密码(可以查看数据库列表什么的….)
   某数据库管理员也就是对每个数据库添加用户名和密码

澳门新浦京电子游戏 5

4、开始实践那么一下

澳门新浦京电子游戏 6

  1. 开启服务(启用权限控制)
    mongod -dbpath=D:/MongoDB/Data -logpath=D:/MongoDB/Log/test.log
    -auth
    澳门新浦京电子游戏 7
  2. 默认没有用户名和密码的情况下是可以访问任意数据库的
    澳门新浦京电子游戏 8
  3. 在这此情况下,创建一个超级管理员
    输入:use admin
    输入:db.addUser(‘sa’,’123′)
    然后再访问admin数据库试试,就会出现错误提示,这是就是因为需要用户授权,当输入用户名和密码来授权之后,就OK
    澳门新浦京电子游戏 9
  4. 此时按Ctrl+C退出,然后再进入,用刚才创建的用户去访问admin以外的数据库,例如:test
    用admin创建的超级管理员 style=”color: #ff0000;”>无法直接访问其他数据库,但是 style=”color: #ff0000;”>可以间接的去访问。
    澳门新浦京电子游戏 10
  5. 利用超级管理员 style=”color: #ff0000;”>间接的去访问任意数据库,间接的去访问就是先通过授权进入admin数据库,然后再由admin数据库进入其他数据库
    澳门新浦京电子游戏 ,即:以admin数据库为跳板,再进入其他数据库
    澳门新浦京电子游戏 11
  6. 为数据库添加用户名和密码,每个数据库都可以添加直接访问此库的用户和密码,并且是存放在本库的system.users表中的
    为test数据库创建直接访问用户:用户名=test     密码=123
    澳门新浦京电子游戏 12
  7. 继续第6步,按Ctrl+C退出,再次进入test数据库,并输入第6步中为test数据库创建的直接访问用户和密码来进行授权
    澳门新浦京电子游戏 13

    大功告成….
    此时有没有对数据库的权限问题有了些了解呢?

澳门新浦京电子游戏 14澳门新浦京电子游戏 15

 5、几个简单的服务安装、服务卸载以及用户登录实例

澳门新浦京电子游戏 16

  1. 安装:mongod -dbpath=D:/MongoDB/Data
  2. 安装:mongod -dbpath=D:/MongoDB/Data
    -logpath=D:/MongoDB/Log/test.log
  3. 安装:mongod -dbpath=D:/MonogDB/Data
    -logpath=D:/MongoDB/Log/test.log -logappend
  4. 安装:mongod -dbpath=D:/MonogDB/Data
    -logpath=D:/MongoDB/Log/test.log -logappend -fork
    卸载:db.shutdownServer()
    以上的cmd中的shell连接:mongo 或者mongo admin(指定的数据库名称)
                          C#连接:mongodb://localhost
  5. 安装:mongod -dbpath=D:/MongoDB/Data
    -logpath=D:/MongoDB/Log/test.log  port 2222 -install
    开启:net start MongoDB
    关闭:net stop MongoDB
    卸载:mongod -dbpath=D:/MongoDB/Data
    -logpath=D:/MongoDB/Log/test.log  port 2222 -remove
    命令连接:mongo 127.0.0.1:2222或mongo
    127.0.0.1:2222/admin(即:数据库名称)
     c#连接:mongodb://127.0.0.1:2222或Server=127.0.0.1:2222
  6. 安装:mongod -dbpath=D:/MongoDB/Data
    -logpath=D:/MongoDB/Log/test.log  port 2222  -auth -install
    与5类似
    命令连接:
      c#连接:mongodb://用户名:密码@localhost:2222  
    登录后将默认使用admin数据库
             
    mongodb://用户名:密码@localhost:2222/admin(即:数据库名称)

 

id=”articlecontent”>以下列出的uri样式并非被所有的数据库驱动所支持,请参考各驱动自己的文档,查看各驱动支持的连接字符串uri形式。如果下面的样式不支持,那么驱动会有自己的指定连接的替代方式。

id=”articlecontent”>mongodb:``//[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

id=”articlecontent”>mongodb:``// 是一个必填的前缀,它标识当前字符串是标准连接格式。
id=”articlecontent”>{{username:password@}}可选。给出用户名和密码后,驱动将在连接到数据库后尝试登录。host1 uri里唯一的必填项,数据库的连接地址。
id=”articlecontent”>:portX 可选。默认连接到27017端口。
id=”articlecontent”>/database 是希望连接到的数据库名,只有在提供 username:password@ 后该值才有效。如果不指定,默认将连接``"admin"``数据库。 id=”articlecontent”>可以任意指定多个数据库和端口,这用于实现连接到replica pairs/sets。可选项options有:
  connect=direct|replicaset
   id=”articlecontent”>direct: 直接建立一个到服务器的连接。如果指定了多个host,将按先后顺序挨个尝试建立连接,直到连接建立成功为止。如果只指定了一个host,则 direct 为默认值。
   id=”articlecontent”>replicaset: 使用creplica ``set semantics建立连接(即使只提供了一个host)。指定的host作为种子列表来查找完整的replica``set。当指定多个host时 replicaset 为默认值。
  replicaset=name
   id=”articlecontent”>驱动验证建立连接的replica ``set的名字。隐含 connect=replicaset。
   id=”articlecontent”>slaveok=``true``|``falseotrue``: 对于 connect=direct 模式,驱动对列表中的第一个服务器建立连接,即使它不是主服务器。对 connect=replicaset 模式,驱动将所有写操作发送到主节点,将所有读操作按round robin顺序分发到从节点。
   id=”articlecontent”>false``: 对 connect=direct 模式,驱动按顺序尝试所有host直到找到主节点。对 connect=replicaset 模式,驱动将只连接到主节点,并将所有读操作和写操作都发送到主节点。 id=”articlecontent”>safe=``true``|``false
  true: 驱动在每次更新操作后都发送 getlasterror
命令以确保更新成功(参考 w 和 wtimeout)。

  false: 驱动每次更新操作后不发送 getlasterror 命令。

   w=no  
  驱动给 getlasterror 发送 { w : n } 命令。隐含 safe=true。

   wtimeout=ms
  驱动给 getlasterror 添加 { wtimeout : ms } 参数。隐含
safe=true。

  fsync=true|false
  true: 驱动给 getlasterror 添加 { fsync : true } 参数。隐含
safe=true。

  false: 驱动不添加 fsync 参数。

 

连接示例

连接到一个运行在本机默认端口(27017)的MongoDB
mongodb://localhost
连接到一个运行在本机默认端口(27017)的MongoDB,并以用户名"fred"和密码"foobar"登录,登录后将默认使用admin数据库
mongodb://fred:foobar@localhost
连接到一个运行在本机默认端口(27017)的MongoDB,并以用户名"fred"和密码"foobar"登录,登录后将使用baz数据库
mongodb://fred:foobar@localhost/baz
连接到一个replica pair,一台服务器在example1.com,另一台在example2.com
mongodb://example1.com:27017,example2.com:27017
连接到本机的一个replica set(端口分别为27017,27018,27019)
mongodb://localhost,localhost:27018,localhost:27019
连接到三台服务器的replica set,将所有写操作发送到主节点,所有读操作分发到从节点
mongodb://host1,host2,host3/?slaveok=true
连接到第一台服务器并响应,无论它是replica set的一台,也无论它是主节点还是从节点
mongodb://host1,host2,host3/?connect=direct;slaveok=true
注:这种类型的连接字符串可用于在你偏好使用某台服务器但有可供替换的服务器的时候。
使用safe模式连接到本机
mongodb://localhost/?safe=true
使用safe模式连接到replica set,等待备份在至少两台机器上完成,timeout时间为2秒
mongodb://host1,host2,host3/?safe=true;w=2;wtimeout=2000

注意这个安装的位置,下面要用呢。

澳门新浦京电子游戏 17

澳门新浦京电子游戏 18

澳门新浦京电子游戏 19

澳门新浦京电子游戏 20

图上的说的是刚刚安装完的时候的样子,打错字啦。

1.
创建几个文件夹具体如下:数据库路径(data目录)、日志路径(logs目录)和日志文件(mongo.log文件)

注意文件夹的前后对比:

澳门新浦京电子游戏 21

  1. 创建配置文件mongo.conf,文件内容如下:

    #数据库路径
    dbpath=D:Mongodata
    #日志输出文件路径
    logpath=D:Mongologsmongo.log
    #错误日志采用追加模式
    logappend=true
    #启用日志文件,默认启用
    journal=true
    #这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
    quiet=true
    #端口号 默认为27017
    port=27017

澳门新浦京电子游戏 22

**

  1. 启动MongoDB服务**

mongod –config “D:Mongomongo.conf” 
这个是使用自己刚刚在上面配置的配置文件来启动服务的。注意修改成自己的目录位置。额,这个当然是在cmd命令行窗口的对应安装bin目录下拉

澳门新浦京电子游戏 23

这个是在cmd命令行下执行这个命令的,执行完之后,命令行,似乎没什么太大的变动,然后你继续执行下面的步骤。

这个步骤的截图,在下面的第四步里面是可以看到这个步骤的命令执行效果的。可以先看下下面的那个步骤图。
命令执行后,浏览器中输入

澳门新浦京电子游戏 24

澳门新浦京电子游戏 25

有的可能在这里失败了,也许页面并没有这么显示,但是不要紧,你看看刚刚的那个data目录下有没有文件生成,还有log文件有没有内容。如果有,那么就是服务启动了,

还可以再,任务管理器里面,看看有没有这么个mongo的服务存在。都是可以判断这个服务启动OK没有。

4. 创建并启动MongoDB服务
如果每次都如上操作,岂不是相当麻烦,按照如下命令来创建并启动MongoDB服务,就可以通过windows服务来管理MongoDB的启动和关闭了

mongod –config “D:Mongomongo.conf”  –install –serviceName
“MongoDB”
net start MongoDB

上面是2行的命令

澳门新浦京电子游戏 26

澳门新浦京电子游戏 27

这个服务的启动,是有点特殊的。是不需要登录验证的,就是没有密码也可以登录。

具体看下图。这个是用mongoVUE登录看到的效果

澳门新浦京电子游戏 28

澳门新浦京电子游戏 29

等一下,图上的描述不是很正确,应该是我就创建了一个数据库叫lxkdb,上面的另外的2个一个叫admin,和local都是安装完mongo
db之后,自动生成的数据库。

也可以看到上面并不存在一个叫test的数据库,所以说,系统默认存在一个叫test数据库的说法是错误的。下面还会解释这个问题。

这句话是后来更新的:上面说这个test不存在,也不完全对,具体看最下面的解释吧。先不在意这个

其中admin这个数据库存放的是用户信息。

关于这个用户信息,不是我们想的那么简单的只是存个用户名和密码就完了。

MongoDB
缺省是没有设置权限的,也就是说,没有设置访问权限。上面的启动方式就是没有设置权限的启动,所以,登录数据库,是不需要验证用户名和密码的。

这就意味着只要知道 MongoDB
服务器的端口,任何能访问到这台服务器的人都可以查询和操作 MongoDB
数据库的内容。
也就是像我上面测试的那样,啥也不输入,都可以直接测试连接OK。

所以加上 –auth这样以后就可以使用用户名和密码后才能进行MongoDB的相关操作
 MongoDB
的用户和权限,这个有点复杂,先有个印象。

数据库用户有两种,一种是管理员,用来管理用户,一种是普通用户,用来访问数据。

(后面我会继续说说这个两种权限的数据库用户是到底怎么在用的)

注意:

下面这个带权限控制的安装服务,你呢,暂时先别整,这个权限你要是开了的话,必须先在数据库里面建个账户和密码。

这个就像你在把锁锁住之前得先准备好钥匙的道理似的。所以,在你不了解这个权限的情况下,暂时还不是先不加这个权限控制。

等看了怎么新建管理用户和一般数据库用户之后再打开这个权限。后面我再好好总结一下。

关于–安全和认证–的解释:

每个MongoDB实例中的数据库都可以有许多用户。如果开启了安全性检查,则只有数据库认证用户才能执行读或者写操作。

在认证的上下文中,MongoDB会将普通的数据作为admin数据库处理。admin数据库中的用户被视为超级用户(即管理员)。

在认证之后,管理员可以读写所有数据库,执行特定的管理命令,如listDatabases和shutdown。

在开启安全检查之前,一定要至少有一个管理员账号。

后面跟链接:详细图解记录 win7
64 mongodb
新建管理者账户和一般账户的例子

(这个你刚刚开始学习的时候,可以先不开权限验证,那么在登录数据库的时候,就不需要账号和密码,操作也简单。)

(以下操作是,打开权限认证,使用数据库之前,必须先验证一下,才可以继续,Authentication,也就是经常会看到这个单词。)

然后,把这个服务给卸载了(下面有讲解怎么卸载这个服务,我这就不重复啦),然后再次注册个服务的话,命令多添加个
–auth。

mongod –config “D:Mongomongo.conf”  –auth –install
–serviceName “MongoDB”
net start MongoDB

也可以在配置文件里面再加一个auth=true的配置。效果差不多吧。

然后就不能没有密码直接登录啦。

注意啦:这个mongoVUE的版本太低了,导致即使你账号密码OK,还是会出现异常的情况,在我经历了多次卸载重装服务之后,换了个mongo数据库工具,特么的可算是OK了。

那就暂时先不管这个工具的报错了吧。下一篇我示范如何使用这个数据库,在这知道这个权限问题,就好。

而且这个权限问题,很是麻烦。

澳门新浦京电子游戏 30

刚刚安装好的mongo服务有个默认的数据库,test,user
的name和pwd都是test。如下图。(这句话,在下面被推翻,理论不成立。)

澳门新浦京电子游戏 31

点test,测试一下,连接是不是OK的。然后就有上图了

本来我是看别人的文章上说,mongo刚刚安装完毕的时候,是有个test数据库,然后用户名和密码都是test,然后我用那个mongoVUE这个可视化工具测试了下。
发现测试连接是OK的,也就是如图上所示。然后我就
以为真的是有这个数据库存在的,但是后来又想了想,不对呀,好像不是这样的。
后面我反复测试那个权限问题的时候,发现,这个mongoVUE,即使你不填写用户名和密码,随便填写个数据库名称,然后测试连接,也是可以测试OK的。

澳门新浦京电子游戏 32

但是我用另一个新发现的mongo数据库工具,就没有这个问题。

澳门新浦京电子游戏 33

而且也用这个mongo数据库工具,可以看到那个
–auth的效用还是存在的,就是这个时候,必须得有账户名和密码才可以使用数据库。

我这个暂时还没测试,无权限管控的启动服务,然后用这个登录数据库看看啥情况。
有空了,或者,看官你测试一下呗。就是刚刚没加–auth启动服务的时候,是不是不用账户密码,就可使用这个工具连上数据库。

这个连接数据库的工具的网址,算是个开源的项目吧。

Robomongo 0.9.0

我下载的到某度云盘的分享
链接: 密码:iaie

两个工具比较之后,可以发现这个mongoVUE的版本确实太低了。下一篇
有这个mongoVUE的版本图。

如果需要卸载MongoDB服务,则还是在bin目录下,
mongod.exe –remove –serviceName “MongoDB”

澳门新浦京电子游戏 34

然后这个服务就删除了,然后你再在那个任务管理器里面就看不到这个服务啦。说明他就被干掉了。删除啦。

上面介绍的是从安装mongo服务到卸载mongo服务,都是有图有真相。

下面介绍一些其他的东西。

以后要是想停止这个服务,你就右键,启动任务管理器,选上面的服务,然后右下角的“服务(s)…”,然后找到那个名为MongoDB的系统服务,关掉就可以啦。

澳门新浦京电子游戏 35

至此,所有操作已完成,服务已成功安装。
我就暂时先把这个mongo的数据库在我的电脑上装好,具体怎么使用。以后再说。

这个
时候,再看刚刚我们新建的data文件夹和mongo.log两个文件的时候就发现里面有数据啦,也可以说明,这一路的操作都很OK的。

澳门新浦京电子游戏 36

澳门新浦京电子游戏 37

额,呵呵,就是我这图上传的有点多。。。

最后,每次要在命令行使用mongo命令,都得进入到对应的bin目录下,这样很是麻烦,何不配置个系统环境变量,方便直接使用,这个mongo命令

澳门新浦京电子游戏 38

这样就可以直接在cmd命令行,不需要进行目录切换,就可以直接使用啦

澳门新浦京电子游戏 39

关于数据库里面的test数据库存在与否的解释:

澳门新浦京电子游戏 40

澳门新浦京电子游戏 41

下一篇具体讲解怎么新建普通的数据库用户和数据库管理者用户。

也就是上面你看到两个数据库是以及登录数据库的账号和密码是怎么设置的。

(这个我已经把链接添加在文章内部了。可以点击链接查看。)

全文都是我自己纯手写哟,诸位看官不点个赞,这样真的好吗?

发表评论

电子邮件地址不会被公开。 必填项已用*标注