zoukankan      html  css  js  c++  java
  • mongodb安装与权限配置

    mongodb下载地址:官方下载
    IDE工具:Robo 3T:官方下载

    windows系统要求64位,最低2g内存,推荐8g内存及以上

    安装过程没有需要配置的地方,直接下一步到结束,如果想要方便可以在环境变量中Path追加mongodb安装文件的bin目录

    在想要保存数据库的盘符新建文件夹mongodb 包含两个子文件夹 data和log及一个mongod.cfg文件,log文件夹新建文本改为mongo.log

    其中mongod.cfg文件内容如下(本人用虚拟机只有一个C盘):

    dbpath=C:mongodbdata
    logpath=C:mongodblogmongo.log
    logappend=true
    directoryperdb=true
    auth=false
    #port=55600

    #表示忽略该行,本示例没有使用自定义端口,将采用默认端口27017,如果设置了端口号 ,之后连接mongo都需要指定服务器和端口号

    以管理员身份运行命令提示符,如果已经配置过环境变量,直接运行 mongod,否则需要移动到mongodb安装目录的bin文件夹再执行mongod

    如果报以下异常

    可去 https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145 下载vc_redist.x64.exe安装即可

    执行以下命令创建并开启MongoDB服务(需要管理员权限)如果安装目录的文件夹包含空格,则需要用”括起来,cmd命令中"""表示"

    sc create MongoDB binPath= "C:Program FilesMongoDBServer3.4inmongod.exe --config=C:mongodbmongod.cfg --service"

    net start MongoDB

    接下来打开MongoDB Shell工具:在命令提示符中输入 mongo  运行(如果已经设置端口12345,此处为  mongo --port 12345)

    此时的数据库是没有权限控制的,任何人都可以登录到数据库

    输入 show dbs; 显示所有数据库

    输入 use admin; 使用admin数据库 分号是可选的 

    输入 show collections 显示所有文档(关系型数据库中表的概念)

    输入 show users 显示所有用户,当前没有任何账户

    接下来创建账户,确保是在use admin的情况下:

    db.createUser({
      user:"root",
      pwd: "123456",
      roles: [ { role: "root", db: "admin" }]
    })

    db.createUser({
      user:"sa",
      pwd: "123456",
      roles: [ { role: "userAdminAnyDatabase", db: "admin" },{ role: "read", db: "clearimg" } ]
    })

    注册用户登录权限(这几个账号是在admin数据库下,连接服务器即使有其他数据库权限也必须连接到admin)

    db.auth("root","123456")

    db.auth("sa","123456")

    添加一个新的数据库 mytest,只需要对mytest数据库进行文档操作,存在则调用,不存在则创建

     在mytest数据库新建账号test,并注册权限

    db.createUser({
      user:"test",
      pwd: "123456",
      roles: [{ role: "read", db: "mytest" } ]
    })

    db.auth("test","123456")

     切换到admin数据库添加test2用户使其只拥有mytest数据库的read权限

    use mytest
    db.createUser({
      user:"test2",
      pwd: "123456",
      roles: [{ role: "read", db: "mytest" } ]
    })
    db.auth("test2","123456")

    用show users 查看当前数据库拥有的账户

    最后用exit或者ctrl + c退出MongoDB Shell   到此为止数据库已经拥有对应的账户,没有开启权限验证

    接下来停用原有MongoDB服务(需要管理员权限)

    net stop MongoDB

     并更新mongod.cfg文件中的auth=true,执行启动服务的指令(需要管理员权限)

     net start MongoDB

    现在已经开启权限认证了,再次登录打开MongoDB Shell ,输入show dbs,发现报异常

    exit退出MongoDB Shell,改用账号登录服务器

    mongo -u sa -p 123456 localhost:27017/admin

    尝试登录时不带数据库名,发现报权限错误

    切换账号test2登录  分别尝试连接到admin 和mytest会发现test2可以登录admin而不是mytest,但test2只有mytest的读取权限,操作admin数据库也是非法的

    尝试用test账号登录mytest数据库并尝试操作其他数据库

    备份和恢复角色:bakcup restore
    所有数据库角色:

    read 指定数据库的只读权限,拥有以下权限:

    readWrite 拥有指定数据库的读写权限,除了具有read权限,还拥有以下权限:

    read和readWrite只要就是对库中表的操作权限

    dbAdmin 指定数据库的管理权限

    userAdmin 指定数据库的用户管理权限

    clusterAdmin 集群管理权限

    readAnyDatabase 任何数据库的只读权限(和read相似)

    readWriteAnyDatabase 任何数据库的读写权限(和readWrite相似)

    userAdminAnyDatabase 任何数据库用户的管理权限(和userAdmin相似)

    dbAdminAnyDatabase 任何数据库的管理权限(dbAdmin相似)


    创建用户 db.createUser({user:"username",pwd: "pwd",roles: [ { role: "rolename", db: "dbname" },{ role: "rolename2", db: "dbname2" } ]})
    修改密码 db.changeUserPassword('usname','newpwd');
    添加角色 db.grantRolesToUser("username", [{ role: "rolename",db:"dbname"}] )
    删除权限 db.revokeRolesFromUser("username",[{ role: "rolename",db:"dbname"}])
    删除用户 db.dropUser("username")

  • 相关阅读:
    C# Lambda表达式
    C# LINQ用法
    C# XML介绍及基本操作
    C# 装箱和拆箱
    C# 堆与栈
    C#中ref和out的区别
    C#中16进制string字符串的转16byte互转
    C#中把一个Struct结构转换成Byte[]的方法
    SqlServer中查询操作记录的方法
    asp.net中后台获取Post参数(Json)最简单的一种方法。
  • 原文地址:https://www.cnblogs.com/jasonlwings/p/7443632.html
Copyright © 2011-2022 走看看