zoukankan      html  css  js  c++  java
  • mongo-yum安装-配置用户权限

    安装

    安装步骤参考https://www.cnblogs.com/layezi/p/7290082.html

    安装前注意: 此教程是通过yum安装的.仅限64位centos系统

    安装步骤:

    1、创建仓库文件: 

    vi /etc/yum.repos.d/mongodb-org-3.4.repo

    然后复制下面配置,保存退出

    [mongodb-org-3.4]
    
    name=MongoDB Repository
    baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
    gpgcheck=1
    enabled=1
    gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
     

    2、yum安装

    yum install -y mongodb-org

    没有权限就在前面加:   sudo

    安装完毕后修改配置文件:

    vi /etc/mongod.conf

    修改配置文件的 bind_ip, 默认是 127.0.0.1 只限于本机连接。所以安装完成后必须把这个修改为 0.0.0.0 ,否则通过别的机器是没法连接的!

    3、启动、停止、重启

    MongoDB默认将数据文件存储在/var/lib/mongo目录,默认日志文件在/var/log/mongodb中。如果要修改,可以在 /etc/mongod.conf 配置中指定备用日志和数据文件目录。

    启动命令:

    service mongod start

    停止命令:

    service mongod stop

    查看mongoDB是否启动成功:

    可以通过查看日志文件

    cat /var/log/mongodb/mongod.log

    日志文件应该会出现如下一句说明

    [initandlisten] waiting for connections on port <port>

    <port> 是mongodb运行端口

    也可以通过下面命令检查是否启动成功

    chkconfig mongod on

     4、使用

    [root@instance-d0nk2r2c ~]# mongo
     
    ## 查看数据库
    > show dbs;
     
    ## 查看数据库版本
    > db.version();
     
    ## 常用命令帮助
    > db.help();

     权限

    和其他所有数据库一样,权限的管理都差不多一样。mongodb存储所有的用户信息在admin 数据库的集合system.users中,保存用户名、密码和数据库信息。mongodb默认不启用授权认证,只要能连接到该服务器,就可连接到mongod。若要启用安全认证,需要更改配置文件参数auth。

    想要添加用户密码验证首先需要添加用户,用户存在system.users 表中

    > use admin
    switched to db admin
     db.createUser({user:'admin',pwd:'admin123',roles:[{ "role" : "userAdminAnyDatabase", "db" : "admin" }]})

    刚建立了 userAdminAnyDatabase 角色,用来管理用户,可以通过这个角色来创建、删除用户。

    有没有一个超级权限?不仅可以授权,而且也可以对集合进行任意操作?答案是肯定的,只是不建议使用。那就是role角色设置成root

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

    添加了两个用户可以语句查看:

    db.system.users.find()

    此时连接仍然是没有验证的,我们需要重启mongodb,并且要在启动时带上auth参数,才会开启验证

    /usr/bin/mongod -f /etc/mongod.conf --auth

    用户角色授权:

    #授予角色:db.grantRolesToUser( "userName" , [ { role: "<role>", db: "<database>" } ])  
    
    db.grantRolesToUser( "admin" , [ { role: "userAdminAnyDatabase", db: "admin" } ])  
    
    #取消角色:db.grantRolesToUser( "userName" , [ { role: "<role>", db: "<database>" } ])  
    
    db.revokeRolesFromUser( "admin" , [ { role: "userAdminAnyDatabase", db: "admin" } ])  

    roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。role里的角色可以选:

    Built-In Roles(内置角色):
    1. 数据库用户角色:read、readWrite;
    2. 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    4. 备份恢复角色:backup、restore;
    5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    6. 超级用户角色:root  
    // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase)
    7. 内部角色:__system

    Read:允许用户读取指定数据库
    readWrite:允许用户读写指定数据库
    dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
    userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    root:只在admin数据库中可用。超级账号,超级权限
  • 相关阅读:
    Vue 移动端向上滑动加载
    关于NPOI 判断Office 是否为空的操作
    定时任务的处理
    Web中线程与IIS线程池自动回收机制
    本地VS调试服务器 IIS 程序
    每天学点node系列-stream
    聊聊前端模块化开发
    位运算解决多标签问题【原创】
    <未来世界的幸存者> 读后感(现实篇和职业篇)【原创】
    Nest.js你学不会系列-初识Nest
  • 原文地址:https://www.cnblogs.com/china2k/p/8046520.html
Copyright © 2011-2022 走看看