MongoDB是一款nosql数据库,是nosql数据库中最贴近关系型数据库的一种。nosql数据库具有高性能、易拓展和高容错等特性,适用于对海量数据集进行查询,在多领域得到应用。
关于mogodb安装配置的文章网上有很多,本文主要对自己的学习和使用过程进行记录。
首先在官网下载zip安装包。MongoDB Atlas是MonggoDB官方提供的云化版本,提供线上数据库管理和租赁服务,我们下载community Server社区版本(主要面向开发者,免费),另外官网提供enterprise Server版本(主要面向使用者,收费)。本文使用monggodb 3.4 支持ssl连接的64位版本进行安装。
1.解压zip到指定文件夹,本机为“D:\MongoDB\Server”。
2.创建“D:\MongoDB\data\db”路径作为mongodb数据库数据存放路径。
3.打开cmd,cd到“D:\MongoDB\Server\bin”路径。运行“mongod –dbpath D:\mongodb\data\db”指定数据存放路径。
4.浏览器打开 http://localhost:27017/ 看到“It looks like you are trying to access MongoDB over HTTP on the native driver port.”说明路径指定成功,MongoDB默认监听端口是27017
下面配置MongoDB服务:
1.创建日志存储路径“D:\MongoDB\data\log”。新建文件mongodb.log。
2.在“D:\MongoDB\Server”下创建mongo.config文件。指定dbpath和logpath。logappend=true设置日志以追加方式产生。
3**.用管理员身份打开cmd命令行**,进入MongoDB安装路径下的bin目录,输入:
mongod –config D:\MongoDB\Server\mongo.config –install –serviceName “MongoDB”
4.在cmd中输入services.msc可以查看到注册的MongoDB服务。
市面上有很多mongodb的gui工具,本文使用Robo 3T,安装过程很简单,到官网下载最新版本,然后点击安装,一路next。本文安装在D:\MongoDB\GUI\Robo 3T 1.1.1目录下。
打开gui的shell。
创建第一个用户,该用户需要有用户管理权限
这里设置其角色为root,shell命令:
use admin
db.createUser({user:”admin”,pwd:”password”,roles:[“root”]})
在mongodb的配置文件mongo.config中开启登录认证 auth=true,默认为false。然后重启windows中的MongoDB服务。
注:为指定数据库添加用户和权限
db.createUser({ user: “root”,pwd: “root”,customData:{name:”root”},roles:[{ role: “readWrite”,db: “目标数据库” }]})
新增的用户在system.users中,可以在admin的system.users数据表中查看到。
第一个用户添加完成后,用db.auth(“admin”, “password”)开启登录认证。
重新打开gui工具,进行连接时会出现failed to execute “listdatabases” command,说明没有登录授权,需要重新edit connection,添加authentication方能进入。
以下参考博客:
1、创建用户并授权
语法:
db.createUser({user:”UserName”,pwd:”Password”,roles:[{role:”RoleName”,db:”Target_DBName”}]})
首先选择在哪个库创建用户,如test:use test;
创建用户有3项需要提供:用户名,密码,角色列表
例如我要在test下面创建用testuser,密码为testpwd,角色列表包括test库的readWrite角色和userAdmin角色:
db.createUser({user:”testuser”,pwd:”testpwd”,roles:[{role:”readWrite”,db:”test”},{role:”userAdmin”,db:”test”}]})
2、修改密码
首先进入目标库:use test
db.changeUserPassword(‘testuser’,’testPWD’);
3、添加角色
首先进入目标库:use test
db.grantRolesToUser( “testuser”, [ { role: “read”,db:”admin”} ] )
4、回收角色权限
首先进入目标库:use test
db.revokeRolesFromUser(“testuser”,[ { role: “read”,db:”admin”} ] )
5、删除用户
首先进入目标库:use test
db.dropUser(“testuser”)