• centos 7.5 安装mongodb


    MongoDB安装和启动

     从官网下载最新对应的版本然后解压,本文以3.6.9为例,将文件拷贝到opt目录下,然后解压:

    [root@localhost opt]# tar zxvf mongodb-linux-x86_64-3.6.9.tgz
    mongodb-linux-x86_64-3.6.9/README
    mongodb-linux-x86_64-3.6.9/THIRD-PARTY-NOTICES
    mongodb-linux-x86_64-3.6.9/MPL-2
    mongodb-linux-x86_64-3.6.9/LICENSE-Community.txt
    mongodb-linux-x86_64-3.6.9/bin/mongodump
    mongodb-linux-x86_64-3.6.9/bin/mongorestore
    mongodb-linux-x86_64-3.6.9/bin/mongoexport
    mongodb-linux-x86_64-3.6.9/bin/mongoimport
    mongodb-linux-x86_64-3.6.9/bin/mongostat
    mongodb-linux-x86_64-3.6.9/bin/mongotop
    mongodb-linux-x86_64-3.6.9/bin/bsondump
    mongodb-linux-x86_64-3.6.9/bin/mongofiles
    mongodb-linux-x86_64-3.6.9/bin/mongoreplay
    mongodb-linux-x86_64-3.6.9/bin/mongoperf
    mongodb-linux-x86_64-3.6.9/bin/mongod
    mongodb-linux-x86_64-3.6.9/bin/mongos
    mongodb-linux-x86_64-3.6.9/bin/mongo
    mongodb-linux-x86_64-3.6.9/bin/install_compass

    然后将mongod软连接到usr/bin下:

    ln -s /opt/mongodb/bin/mongod /usr/bin/mongod

    准备mongodb的config文件mongod.conf,并存放到/etc/mongod.conf:

    dbpath = /home/mongo/db/ #数据文件存放目录
    logpath = /home/mongo/log/mongodb.log #日志文件存放目录
    logappend = true
    port = 27017  #端口
    bind_ip=0.0.0.0
    fork = true  #以守护程序的方式启用,即在后台运行
    # nohttpinterface = true  这个配置需要去掉,不然会出现一个如下错误
    # Error parsing INI config file: unrecognised option 'nohttpinterface'
    auth=true

    启动mongodb的服务:

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

     

    待服务起来后,开启另一个控制台窗口,切换到opt/mongodb/bin目录下,然后使用./mongo命令启动mongo客户端

    ./mongo
    MongoDB shell version v3.6.9
    connecting to: mongodb://127.0.0.1:27017
    Implicit session: session { "id" : UUID("d40146fc-9578-487f-bf74-8a8318f498ff"
    MongoDB server version: 3.6.9
    Welcome to the MongoDB shell.
    For interactive help, type "help".
    For more comprehensive documentation, see
            http://docs.mongodb.org/
    Questions? Try the support group
            http://groups.google.com/group/mongodb-user

    这说明客户端已连接到mongo server

     

    MongoDB如何设置权限(类似关系型数据库的用户名和密码)

     

    MongoDB 缺省是没有设置鉴权的,业界大部分使用 MongoDB 的项目也没有设置访问权限。这就意味着只要知道 MongoDB 服务器的端口,任何能访问到这台服务器的人都可以查询和操作 MongoDB 数据库的内容。在一些项目当中,这种使用方式会被看成是一种安全漏洞。

    本文介绍如何在单台 MongoDB 服务器上设置鉴权。设置完后,MongoDB 客户端必须用正确的用户名和密码登录,才能在指定的数据库中操作。

    首先介绍下 MongoDB 的用户和权限。每个数据库都有自己的用户,创建用户的命令是db.createUser()(文档),当你创建一个用户时,该用户就属于你当前所在的数据库。

    每个用户包含三个要素:用户名、密码和角色列表。下面是一个例子:


    {
    user: "dbuser",
    pwd : "dbpass",
    roles: ["readWrite", "clusterAdmin"]
    }

    这个例子表示一个名为dbuser的用户,它在当前的数据库中拥有 readWrite 和 clusterAdmin 两个角色。

    --------------------------------------------------------------------------------------------------------------------------


    MongoDB 内置了很多角色,但要注意,不是每个数据库的内置角色都一样。其中 admin 数据库就包含了一些其他数据库所没有的角色。

    熟悉 Oracle 的童鞋们都知道,数据库用户有两种,一种是管理员,用来管理用户,一种是普通用户,用来访问数据。类似的,为 MongoDB 规划用户鉴权时,至少要规划两种角色:用户管理员和数据库用户。如果搭建了分片或主从,可能还会要规划数据库架构管理员的角色,它们专门用来调整数据库的分布式架构。

    在创建用户之前,我们首先要修改 MongoDB 的启动方式。缺省方式下 MongoDB 是不进行鉴权检查的。我们只要在运行 MongoDB 的命令后面加上一个 --auth 参数即可,例如:

    mongod --dbpath ./db1 --port 20000 --auth

    如何创建用户管理员


    用户管理员是第一个要创建的用户。在没有创建任何用户之前,你可以随意创建用户;但数据库中一旦有了用户,那么未登录的客户端就没有权限做任何操作了,除非使用db.auth(username, password)方法登录。

    用户管理员的角色名叫 userAdminAnyDatabase,这个角色只能在 admin 数据库中创建。下面是一个例子:

    > use admin
    switched to db admin
    > db.createUser({user:"root",pwd:"root123",roles:["userAdminAnyDatabase"]})
    Successfully added user: { "user" : "root", "roles" : [ "userAdminAnyDatabase" ] }

    这个例子创建了一个名为 root 的用户管理员。创建完了这个用户之后,我们应该马上以该用户的身份登录:

    > db.auth("root","root123")
    1
    db.auth() 方法返回 1 表示登录成功。接下来我们为指定的数据库创建访问所需的账号。

    --------------------------------------------------------------------------------------------------------------------------

    如何创建数据库用户


    首先保证你已经以用户管理员的身份登录 admin 数据库。然后用 use 命令切换到目标数据库,同样用 db.createUser() 命令来创建用户,其中角色名为 “readWrite”。

    普通的数据库用户角色有两种,read 和 readWrite。顾名思义,前者只能读取数据不能修改,后者可以读取和修改。
    下面是一个例子:

    > use test
    switched to db test
    > db.createUser({user:"testuser",pwd:"testpass",roles:["readWrite"]})
    Successfully added user: { "user" : "testuser", "roles" : [ "readWrite" ] }
    > db.auth("testuser","testpass")
    1

    这样 MongoDB 的数据安全性就得到保障了,没有登录的客户端将无法执行任何命令。

  • 相关阅读:
    算法系列(三)
    .net页面生命周期
    初级程序员的学习方法见解
    .net面向对象学习笔记(二)
    算法系列(二)
    “automation服务器不能创建对象”的问题的解决方案大全
    UNKNOWN.RPT 无法将请求提交后台处理
    水晶报表ActiveX控件打印
    .net中调用js乱码解决办法
    GridView自动序号
  • 原文地址:https://www.cnblogs.com/fousor/p/10119195.html
Copyright © 2020-2023  润新知