您的位置:首页 > 数据库 > Mongodb

在Windows环境下安装, 使用MongoDB

2016-01-15 11:06 330 查看

精选30+云产品,助力企业轻松上云!>>>

安装和启动

https://www.geek-share.com/detail/2584896021.html

1、下载
地址:http://www.mongodb.org/downloads(32位还是64位自行选择)。
我下载的是:mongodb-win32-x86_64-2.4.5.zip

2、解压
把mongodb-win32-x86_64-2.4.5.zip放到某个位置,解压。我放的是D:\dev目录。
解压后的路径为D:\dev\mongodb-win32-x86_64-2.4.5

3. 安装准备
MongoDB默认的数据目录为:C:\data\db。如果不用默认目录,则需要在在mongod.exe命令后加--dbpath参数。
创建数据目录。我创建的是D:\dev\mongodb-win32-x86_64-2.4.5\data\db
创建日志目录及其文件。我创建的是D:\dev\mongodb-win32-x86_64-2.4.5\log及D:\dev\mongodb-win32-x86_64-2.4.5\log\log.txt。

4、启动MongoDB
打开cmd窗口(cmd.exe),进入D:\dev\mongodb-win32-x86_64-2.4.5\bin,执行mongod.exe命令,见下图。
mongod.exe --logpath=D:\dev\mongodb-win32-x86_64-2.4.5\log\log.txt --dbpath=D:\dev\mongodb-win32-x86_64-2.4.5\data\db

--logpath 参数是设定日志文件的路径。
--dbpath 参数是设定数据库文件的存放路径。
mongod.exe命令的所有参数选项可通过mongod.exe --help查看。

5、作为服务进行安装
使用管理员权限打开windows的cmd窗口,进入D:\dev\mongodb-win32-x86_64-2.4.5\bin目录。
mongod.exe --install --logpath=D:\dev\mongodb-win32-x86_64-2.4.5\log\log.txt --dbpath=D:\dev\mongodb-win32-x86_64-2.4.5\data\db
--install 参数是设定安装为服务器

设置为服务后,即可在cmd(管理员权限打开的windows cmd窗口)窗口用服务的方式启动或停止MongoDB。
net start mongodb  启动mongodb服务

net stop mongodb  启动mongodb服务

转者注:第一次启动的时候不需要第四部,直接进行第五步安装服务.

6、进入shell环境界面
进入sheelMongoDB后,在cmd窗口进入D:\dev\mongodb-win32-x86_64-2.4.5\bin目录,输入mongo.exe,则可以进入shell环境界面。


使用MongoDB

https://www.geek-share.com/detail/2518501820.html

进入mongodb的bin目录,启动mongo.exe进入shell,可以执行对MongoDB的操作

如:C:\Program Files\MongoDB\Server\3.2\bin\mongo.exe


use test  切换到'test' database,如果没有会自动创建

show dbs  显示所有db

db.dropDatabase();   删除当前使用数据库

db.cloneDatabase(“127.0.0.1”); 将指定机器上的数据库的数据克隆到当前数据库

db.copyDatabase("mydb", "temp", "127.0.0.1");将本机的mydb的数据复制到temp数据库中

db.repairDatabase();修复当前数据库

db/db.getName(); 查看当前使用的数据库

db.stats(); 显示当前db状态

db.version(); 当前db版本

db.getMongo(); 查看当前db的链接机器地址


Collection

1、创建一个聚集集合(table)

 db.createCollection(“collName”, {size: 20, capped: 5, max: 100});

2、得到指定名称的聚集集合(table)

 db.getCollection("account");

3、得到当前db的所有聚集集合

 db.getCollectionNames();

4、显示当前db所有聚集索引的状态

 db.printCollectionStats();


 用户相关

1、添加一个用户

 db.addUser("name");

 db.addUser("userName", "pwd123", true); 添加用户、设置密码、是否只读

2、数据库认证、安全模式

 db.auth("userName", "123123");

3、显示当前所有用户

 show users;

4、删除用户

 db.removeUser("userName");


其他

1、查询之前的错误信息

 db.getPrevError();

2、清除错误记录

 db.resetError();


转者补充:

增删改查的详细内容查阅官方文档 https://docs.mongodb.org/v3.0/reference/

添加用户和认证

http://hae.iteye.com/blog/2183478

链接和大部分网上资料为linux环境下的操作,win环境下其实也很简单

切换到用户表
> use admin 

创建用户
> db.createUser
(
    {
        user:"root",
        pwd:"root",
        roles:[{role:"userAdminAnyDatabase",db:"admin"}]
    }
) 

查看刚才添加的用户
> show user 

停止monggo或者从win的图形界面进行操作
> net stop mongodb 

和前面的安装相比,多加了一个--auth参数表示需要认证
> mongod.exe --auth --logpath=D:\dev\mongodb-win32-x86_64-2.4.5\log\log.txt 
--dbpath=D:\dev\mongodb-win32-x86_64-2.4.5\data\db --reinstall  

启动monggo或者从win的图形界面进行操作
> net start mongodb 

认证用户
> use admin
> db.auth("root","root")
认证成功会有一个返回值'1'

如果没认证直接使用数据库,会报如下错误
> use test
switched to db test
> show dbs
2016-01-15T06:04:46.788+0000 E QUERY    [thread1] Error: listDatabases failed:{
        "ok" : 0,
        "errmsg" : "not authorized on admin to execute command { listDatabases:
1.0 }",
        "code" : 13
} :
_getErrorWithCode@src/mongo/shell/utils.js:23:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:53:1
shellHelper.show@src/mongo/shell/utils.js:700:19
shellHelper@src/mongo/shell/utils.js:594:15
@(shellhelp2):1:1


需要注意的是,前面的例子创建的root用户仅限于操作admin表,后面的使用中在我创建的test表中还是不能认证,只能再创建一个用户,而且可能是因为非系统表, 创建的role没有'userAdminAnyDatabase',改为'readWrite'后可以正常添加了


登录其他表的操作流程为:

use admin, 并且db.auth()认证admin表
> use admin
switched to db admin
> db.auth("root","root")
1
> show dbs
admin  0.000GB
local  0.000GB
test   0.000GB

验证成功后use自定义的表, db.createUser()创建一个用于认证该表的用户
> use test
switched to db test
> db.createUser({user:"test003",pwd:"test",roles:[{role:"readWrite",db:"test"}]}
)
Successfully added user: {
        "user" : "test003",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "test"
                }
        ]
}

创建完成之后, show users可以看到在该表下已经有用户了
> show users
{
        "_id" : "test.test003",
        "user" : "test003",
        "db" : "test",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "test"
                }
        ]
}

直接db.auth()使用新创建的用户进行认证
> db.auth("test003","test")
1
> db.test.find()

如果role为'userAdminAnyDatabase'会报错:

2016-01-15T06:31:39.352+0000 E QUERY    [thread1] Error: couldn't add user: No r
ole named userAdminAnyDatabase@test :
_getErrorWithCode@src/mongo/shell/utils.js:23:13
DB.prototype.createUser@src/mongo/shell/db.js:1225:11
@(shell):1:1

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: