设为首页 收藏本站
查看: 1370|回复: 0

[经验分享] Windows MongoDB安装配置

[复制链接]

尚未签到

发表于 2017-12-15 16:04:13 | 显示全部楼层 |阅读模式
  1、下载
  官网:http://www.runoob.com/mongodb/mongodb-window-install.html
  由于是在window下,所以我下载的是mongodb-win32-x86_64-2008plus-ssl-3.2.7-signed.msi,和普通安装软件exe一样,一直点下一步,中途改改安装路径。

  2、配置
  安装之后,还需要配置,比如数据库的数据安装路径,日志路径等等。
  MongoDB将数据目录存储在 db 目录下。但是这个数据目录不会主动创建,需要我们在安装完成后需要手动创建。
  为日志文件,数据文件和配置文件创建目录
  配置文件目录:D:\MongoData\config\mongod.cfg
  日志文件目录:D:\MongoData\dblog\
  数据文件目录:D:\MongoData\db\
   DSC0000.png
  接着再配置mongod.cfg
  

systemLog:  
destination: file
  
path: D:\MongoData\dblog\mongod.log
  
logAppend:
true  
storage:
  
journal:
  
enabled:
true  
dbPath: D:\MongoData\db
  
net:
  
port:
27017  

  
#security:
  
#authorization: enabled
  


3、安装服务
  配置好上面后,在到cmd中执行(使用管理员权限):
  D:\Program Files\MongoDB\Server\3.2\bin>mongod.exe --config "D:\MongoData\config\mongod.cfg" --install
   DSC0001.png
  安装成功
   DSC0002.png

    启动mongodb服务
  net start MongoDB
DSC0003.png

DSC0004.png

  服务成功启动
  可以看看日志文件:后来去查看日志文件: D:\MongoData\dblog\mongod.log
DSC0005.png


   关闭mongodb服务
  net stop MongoDB
DSC0006.png


   删除Windows服务
  两种方式:
  1、 D:\Program Files\MongoDB\Server\3.2\bin> mongod --config D:\MongoData\config\mongod.cfg --remove
DSC0007.png

  2、在系统管理员窗口输入:sc delete MongoDB
DSC0008.png


  4、用户权限设置
  1、MongoDB是没有默认管理员账号,所以要先添加管理员账号,再开启权限认证。
  2、切换到admin数据库,添加的账号才是管理员账号。
  3、用户只能在用户所在数据库登录,包括管理员账号。
  4、管理员可以管理所有数据库,但是不能直接管理其他数据库,要先在admin数据库认证后才可以。

   创建管理员账号
  在admin数据库中,添加一个用户并赋予userAdminAnyDatabase角色。
  例如,下面是在admin数据库中创建一个名为myUserAdmin用户。
  注意:你创建用户的这个数据库(这里就是admin数据库)是用户认证数据库, 尽管用户是在这个数据库认证,而用户又有其他数据库的角色;即,用户认证数据库不限制用户权限。
  在window管理员下启动cmd,并且连接上mongodb,
  连接命令:D:\Program Files\MongoDB\Server\3.2\bin>mongo.exe
  创建用户命令:
  

use admin  
db.createUser(
  
{
  
user:
"myUserAdmin",  
pwd:
"mypass123",  
roles: [ { role:
"userAdminAnyDatabase", db: "admin" } ]  
}
  
)
  
#结果
  
Successfully added user: {
  

"user" : "admin",  

"roles" : [  
{
  

"role" : "userAdminAnyDatabase",  

"db" : "admin"  
}
  
]
  
}
  

DSC0009.png

  查看用户
  show users
   DSC00010.png
  db.system.users.find()
   DSC00011.png

  5、开启权限验证
  配置文件:D:\MongoData\config\mongod.cfg
  注意:要开启配置文件的authorization的权限
  

  

  

systemLog:  
destination: file
  
path: D:\MongoData\dblog\mongod.log
  
logAppend:
true  
storage:
  
journal:
  
enabled:
true  
dbPath: D:\MongoData\db
  
net:
  
port:
27017  

  
security:
  
authorization: enabled
  

  接着就是重启mongod实例。说明了就是重启mongodb服务。

  6、验证权限是否生效  
DSC00012.png


  7、添加普通用户
  1、一旦经过认证的用户管理员,可以使用db.createUser()去创建额外的用户,你可以分配mongodb内置的角色或用户自定义的角色给用户。
  2、这个myUserAdmin用户仅仅只有特权去管理用户和角色,myUserAdmin,如果你试图执行其他任何操作,例如在test数据库中的foo集合中去读数据,mongodb将返回错误。
  3、你创建用户的数据库(这里就是test数据库)是该用户认证数据库。尽管用户认证是这个数据库,用户依然可以有其他数据库的角色。即用户认证数据库不限制用户权限。

    7.1、创建读写用户
  

MongoDB shell version: 3.2.7  
connecting to: test
  

> use admin  
switched to db admin
  

> db.auth('myUserAdmin', 'mypass123')  

1  
> db.createUser(
  
... ... ...  {
  
... ... ...     user: "ott1",
  
... ... ...    pwd: "ott1",
  
... ... ...     roles: [
  
... ... ...       { role: "readWrite", db: "OTT_DB" },
  
... ... ...    ]
  
... ... ...  }
  
... ... ...  )
  
Successfully added user: {
  
"user" : "ott1",
  
"roles" : [
  
{
  
"role" : "readWrite",
  
"db" : "OTT_DB"
  
}
  
]
  
}
  
> use OTT_DB
  
switched to db OTT_DB
  
> db.auth("ott1","ott1")
  
Error: Authentication failed.
  
0
  

  从上面发现在use admin状态下创建数据库OTT_DB的用户ott1,在授权时失败
  先删除ott1
  删除命令:db.dropUser("ott1")
  

> use admin  
switched to db admin
  

> db.auth("myUserAdmin","mypass123")  

1  
> use OTT_DB
  
switched to db OTT_DB
  
> db.auth("ott1","ott1")
  
1
  
> db.dropUser("ott1")
  
true
  
>
  

  因此在创建数据库OTT_DB用户之前,必须进入到OTT_DB状态
  

use OTT_DB  
switched to db OTT_DB
  

> db.createUser(  
... ... ...  {
  
... ... ...     user:
"ott_test",  
... ... ...    pwd:
"ott_test",  
... ... ...     roles: [
  
... ... ...       { role:
"readWrite", db: "OTT_DB" },  
... ... ...    ]
  
... ... ...  }
  
... ... ...  )
  
Successfully added user: {
  

"user" : "ott_test",  

"roles" : [  
{
  

"role" : "readWrite",  

"db" : "OTT_DB"  
}
  
]
  
}
  

>  

  验证用户权限
  关闭mongo.exe,重新打开mongo.exe
   DSC00013.png
  关闭mongo.exe,重新打开mongo.exe
DSC00014.png

  可以看出,进入OTT_DB数据库,要查看test集合里面的数据,必须先授权,输入用户名和密码,否则无法查询
  如果要删除ott_test ,必须首先首先:use admin 然后 db.auth('myUserAdmin', 'mypass123'),再use OTT_DB, 最后执行 db.dropUser("ott_test") 才能成功删除数据库 OTT_DB对应的用户

    7.2、创建只读用户
  给OTT_DB数据库创建只读用户ott2,注意:必须首先进入admin数据库,然后授权,然后进入OTT_DB数据库,然后才能创建用户
  

MongoDB shell version: 3.2.7  
connecting to: test
  

> use admin  
switched to db admin
  

> db.auth('myUserAdmin', 'mypass123')  

1  
> use OTT_DB
  
switched to db OTT_DB
  
> db.createUser(
  
... ... ...  {
  
... ... ...     user: "ott2",
  
... ... ...    pwd: "ott2",
  
... ... ...     roles: [
  
... ... ...       { role: "read", db: "OTT_DB" },
  
... ... ...    ]
  
... ... ...  }
  
... ... ...  )
  
Successfully added user: {
  
"user" : "ott2",
  
"roles" : [
  
{
  
"role" : "read",
  
"db" : "OTT_DB"
  
}
  
]
  
}
  
>
  

  关闭mongo.exe,重新打开mongo.exe,验证ott2用户是否是只读用户
  

MongoDB shell version: 3.2.7  
connecting to: test
  

> use OTT_DB  
switched to db OTT_DB
  

> db.auth("ott2","ott2")  

1  
> db.test.find()
  
{ "_id" : ObjectId("59f837e28d41d3c11f04f7c8"), "name" : "mike" }
  
{ "_id" : ObjectId("59f838bd38e747cd423fcb23"), "name" : "kite" }
  
> db.test.insert("name":"myname")
  
2017-10-31T17:40:54.586+0800 E QUERY    [thread1] SyntaxError: missing ) after argument list @(shell):1:21
  

  
> db.test.insert({"name":"myname"})
  
WriteResult({
  
"writeError" : {
  
"code" : 13,
  
"errmsg" : "not authorized on OTT_DB to execute command { insert: \"test\", documents: [ { _id: ObjectId('59f8453659d24d08aaa61d31'), name: \"myname\" } ], ordered: true }"
  
}
  
})
  
>
  

  由此可见ott是只读用户

  8、MongoDB数据库角色
  内建的角色
  数据库用户角色:read、readWrite;
  数据库管理角色:dbAdmin、dbOwner、userAdmin;
  集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
  备份恢复角色:backup、restore;
  所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
  超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
  内部角色:__system
  角色说明:
  Read:允许用户读取指定数据库
  readWrite:允许用户读写指定数据库
  dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
  userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
  clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
  readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
  readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
  userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
  dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
  root:只在admin数据库中可用。超级账号,超级权限


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424407-1-1.html 上篇帖子: Scala对MongoDB的增删改查操作 下篇帖子: mongoDB在java上面的应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表