• linux 安装配置MongoDB 5.0


    概览

    参考文章
    官方文档

    系统 mongoDB 安装方式
    ubuntu 20 mongoDB 5.0.6 apt

    需记忆的信息

    相关路径

    data log 配置文件
    /var/lib/mongodb /var/log/mongodb /etc/mongod.conf

    常用命令

    sudo systemctl start mongod
    sudo systemctl stop mongod
    sudo systemctl restart mongod
    sudo systemctl status mongod
    # 开启启动
    sudo systemctl disable mongod
    sudo systemctl enable mongod
    

    安装

    流程

    flowchart LR
        安装 --> 创建用户 --> 配置文件里开启authorization --> 重启mongod
    

    安装过程

    sudo apt-get install gnupg
    wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
    sudo apt-get install gnupg
    echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list
    sudo apt-get update
    sudo apt-get install -y mongodb-org
    
    

    锁定更新

    echo "mongodb-org hold" | sudo dpkg --set-selections
    echo "mongodb-org-database hold" | sudo dpkg --set-selections
    echo "mongodb-org-server hold" | sudo dpkg --set-selections
    echo "mongodb-org-shell hold" | sudo dpkg --set-selections
    echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
    echo "mongodb-org-tools hold" | sudo dpkg --set-selections
    

    用户验证和权限管理

    参考文章

    说明:
    1. mongodb 分布式数据库,用户验证(本文称为client auth)和集群成员间的验证(本文称为internal auth) internal auth 使用keyfiles kms之类的验证,先不管它
    2. 用户是和库绑定的,或者说用户验证的粒度是库级别,而不是整个实例级别
    3. 不同的库下面可以有相同的用户名
    4. 一般创建一个root账户,再创建一些普通用户做日常操作
    5. 一般来说应用使用的用户只需要readWrite角色即可

    mongosh进入后

    // 创建root账户
    use admin
    db.createUser({user: "root",pwd: "root",roles: [ { role: "root", db: "admin" } ]})
    // 创建日常用的普通账户
    use test
    /* 具体创建信息自行修改 */
    db.createUser(
      {
        user: "xyz",
        pwd: "xyz123",
        roles: [ { role: "readWrite", db: "test" },
                 { role: "read", db: "reporting" } ]
      }
    )
    

    如上,xyz用户只能登录test/reporting数据库,权限为分布读写/读

    接下来,只需开启authorization,就可以登入了

    sudo vim /etc/mongod.conf
    # 修改后重启
    sudo systemctl restart mongod
    #登录 localhost主机下的admin数据库 
    mongosh localhost/admin -u root -p
    
    用户角色

    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

    用户有关操作示例
    use admin
    //查看当前库内已有用户
    show users
    //查看当前库内可用的roles,默认只有built-in roles
    show roles
    //创建用户,roles可以使用当前库内的角色,或者其他库内的角色
    db.createUser({user: "root",pwd: "root",roles: [ { role: "root", db: "admin" } ]})
    //如何修改密码
    db.changeUserPassword('root','rootNew');
    //已有用户新增和解除built-in roles
    db.grantRolesToUser('<username>', [{ role: '<built-in role>', db: 'admin' }])
    db.revokeRolesFromUser( "<username>", [{ role: '<built-in role>', db: 'admin' }])
    //删除用户命令如下,虽然所有库的用户信息全存在admin的system.users中,删用户时还是要use <库名>才能删除
    use db_name
    db.dropUser("<username>")
    exit
    //退出
    

    由于用户验证是库级别的,切换db时有时需要验证

    db.auth('root','password')
    

    配置文件

    需要修改的地方

    net:
      bindIp: 0.0.0.0  #或者某个IP
    #启用 用户验证
    security:
      authorization: enabled  # 网络上的auth: true 不行,坑死了
    

    配置文件的官方说明

    写法和网上找的老版mongoDB有区别,注意是 **YAML 格式 **
    网络上讲的 fork=true # 以创建子进程的方式运行

    1. 本质上是daemon mode,守护进程,没有控制终端而无法与前台交互。
    2. 写法注意 processManagement.fork 写在 processManagement下
    3. 目前我看来没用,用了没法交互,官方也没默认没推荐

    其它工具

    mongosh

    旧的是 mongo (deprecated)
    注意 这是 javascript的交互式终端,甚至可以执行命令
    1+1

    # (不指定其它信息 自动进入test数据库)
    mongosh
    
    mongosh的连接方式

    参考文章

    mongosh mongodb://username:password@hostname/dbname
    #或者
    mongosh hostname/dbname -u username -p password
    # 带参数 安装模式
    mongodb://localhost/?safe=true
    

    安全模式连接
    safe=true|false
    true: 在执行更新操作之后,驱动都会发送getLastError命令来确保更新成功。(还要参考 wtimeoutMS).
    false: 在每次更新之后,驱动不会发送getLastError来确保更新成功。

    mongosh 的 Editor Mode

    shell中编辑大段的代码不方便,因此可以使用mongosh的编辑器模式;

    config.set( "editor", "vim" )
    config.set( "editor", "nano" )
    config.set("editor","code --wait") // code特殊必须加 --wait 
    // 启动编辑模式
    edit
    // 编辑变量 直接编辑[ ] 
    let albums=[];
    edit albums // 或者直接 edit let albums=[]
    
    config.set('editor',null) // 取消编辑器设置
    

    MongoDB for VSCode 插件

    可视化管理 compass

    wget https://downloads.mongodb.com/compass/mongodb-compass_1.30.1_amd64.deb
    sudo dpkg -i mongodb-compass_1.30.1_amd64.deb
    

    启动compass

    mongodb-compass
    

    卸载MongoDB

    sudo service mongod stop
    sudo apt-get purge mongodb-org*
    sudo rm -r /var/log/mongodb
    sudo rm -r /var/lib/mongodb
    
  • 相关阅读:
    【转】HBase中的时间维度
    【转】HBase基本原理
    【转】BloomFilter——大规模数据处理利器
    【转】HBase客户端API:管理特性
    es6 模本字符串拼接方法 ``
    Electron桌面应用打包流程
    vue-electron脚手架安装及说明 打包基于Vue的 桌面应用程序
    safari打开的页面数字识别变为蓝色
    使用jquery中$.each()方法来循环一个数据列表
    jquery实现点击控制div的显示和隐藏
  • 原文地址:https://www.cnblogs.com/ShawSpring/p/15986167.html
Copyright © 2020-2023  润新知