我爱编程

MongoDB的安装及学习

2017-09-22  本文已影响35人  何柯君

正常安装

dbpath=C:\mongodb\data
logpath=C:\mongodb\logs\mongo.log
logappend=true 
journal=true
quiet=true 
port=27017
cd C:\mongodb\bin
mongod --config "C:\mongodb\mongo.conf" --logpath "C:\mongodb\logs\mongo.log" --install --serviceName "MongoDB"
mongod.exe --remove --serviceName "MongoDB" #如果需要移除这个服务的话

权限配置

MonogoDB默认是无需权限认证即可进行CRUD操作的,但是为了保证MongoDB的使用尤其是商业使用,MongoDB应该要求是做权限配置。
关于权限,需要理解:

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

MongoDB有默认的角色参考官方文档,也可以自定义角色,默认的角色包括:

上述的配置完成后,可以按照下面的操作进行:

C:\Users\kejun.he>mongo
> use admin
switched to db admin
> show collections
system.version
> db.createUser(
 {
 user:"sa",
 pwd:"root",
 roles:["root"]
 })
> db.createUser(
 {
 user:"root",
 pwd:"root",
 roles:["clusterAdmin", "readWriteAnyDatabase", "dbAdminAnyDatabase", "userAdminAnyDatabase"]
 })
> db.createUser(
 {
 user:"admin",
 pwd:"admin",
 roles:[{role:"dbAdminAnyDatabase",db:"admin"}]
 })
auth=true
========================
net stop mongoDB
net start mongoDB

我们再重新登录,发现需要认证的配置生效了,这时候需要通过认证登录:

C:\Users\kejun.he>mongo
MongoDB shell version v3.4.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.3
> show dbs
2017-04-25T13:04:34.435+0800 E QUERY    [thread1] Error: listDatabases failed:{
        "ok" : 0,
        "errmsg" : "not authorized on admin to execute command { listDatabases:
1.0 }",
        "code" : 13,
        "codeName" : "Unauthorized"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:62:1
shellHelper.show@src/mongo/shell/utils.js:761:19
shellHelper@src/mongo/shell/utils.js:651:15
@(shellhelp2):1:1

在上面的代码中,我们可看到需要检查admin的权限,use admin之后不能直接查询,通过权限认证之后才能查看admin数据库下的表。
* 继续增加普通用户,方便用户访问特定的数据库

> use admin
> db.auth("admin","admin")
> use upwords
switched to db upwords
> db.createUser({
user:"up",
pwd:"up",
roles:[{role:"readWrite",db:"upwords"},{role:"dbAdmin",db:"upwords"}]
})

Successfully added user: {
        "user" : "up",
        "roles" : [
                {
                        "role" : "readWrite",
                        "db" : "upwords"
                },
                {
                        "role" : "dbAdmin",
                        "db" : "upwords"
                }
        ]
}
> use upwords
switched to db upwords
> db.auth("up","up")
1
> show collections
abc
test

显示添加成功。

概念

上一篇 下一篇

猜你喜欢

热点阅读