• MongoDB


    Mac上安装和配置MongoDB

    安装MongoDB

    官网地址:https://www.mongodb.com/try/download/community,下载本地版MongoDb,格式为tgz。

     

     把解压后的文件夹放到 /usr/local 下

    执行

    open -e .bash_profile

    配置环境变量,文件中加入

    export PATH=${PATH}:/usr/local/mongodb-macos-x86_64-4.4.1/bin

    保存后关闭文件,执行以下命令使环境变量生效

    source .bash_profile

    执行 mongod -version ,出现如下信息则证明安装成功

    创建数据存储路径

    由于MongoDB的默认存储路径使根目录下的 /data/db ,而这个文件夹并不会由MongoDB自动创建,所以需要我们手动创建文件夹。

    但是Mac OS引入了系统完整性保护(SIP)机制,无法在/、/usr目录下新建文件,所以我们需要通过软连接的方式创建MongoDB数据存储文件夹。

    新建/etc/synthetic.conf文件:

    sudo vim /etc/synthetic.conf

    在文件里面添加目录的映射,每一行都相当于创建一个软链接,一共包含三列。第一列表示根目录/下的目录名,第二列为一个tab键 (不能是空格),第三列为自己新建的目录:

    data    /Users/helios_fz/mongodb-data

    上述配置相当于

    ln -s /Users/helios_fz/mongodb-data /data

    重启Mac,会看到根目录下多了一个/data目录。

    配置用户权限

    先后台启动MongoDB

    mongod &

    再重新打开一个终端,执行mongo。

    MongoDB安装好后第一次进入是不需要密码的,也没有任何用户。现在需要创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限。注意一点,帐号是跟着库走的,所以要在指定的库里授权,也必须也在指定的库里验证(auth)。

    终端输入 mongo 进入MongoDB控制台,执行以下命令创建管理用户:

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

    上述命令中,user是用户名,pwd是密码,roles是指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色。

    role里的角色可以选:

    • 数据库用户角色:read、readWrite;
    • 数据库管理角色:dbAdmin、dbOwner、userAdmin;
    • 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager;
    • 备份恢复角色:backup、restore;
    • 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
    • 超级用户角色:root(dbOwner 、userAdmin、userAdminAnyDatabase也间接或直接提供了系统超级用户的访问)
    • 内部角色:__system

    角色具体解释:

    • read:允许用户读取指定数据库
    • readWrite:允许用户读写指定数据库
    • dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile
    • userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户
    • clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。
    • readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限
    • readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限
    • userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限
    • dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。
    • root:只在admin数据库中可用。超级账号,超级权限

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

    创建用户之后,重启MongoDB。通过 ps -ef | grep mongo 找到MongoDB进程号,然后"kill -9 进程号"关掉数据库。

    通过下列命令启动MongoDB,开启认证:

    mongod --auth &

    常用命令

    show dbs  #显示数据库列表 
    show collections  #显示当前数据库中的集合(类似关系数据库中的表)
    show users  #显示用户
    use <db name>  #切换当前数据库,如果数据库不存在则创建数据库。 
    db.help()  #显示数据库操作命令,里面有很多的命令 
    db.foo.help()  #显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令 
    db.foo.find()  #对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) 
    db.foo.find( { a : 1 } )  #对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
    db.dropDatabase()  #删除当前使用数据库
    db.cloneDatabase("127.0.0.1")   #将指定机器上的数据库的数据克隆到当前数据库
    db.copyDatabase("mydb", "temp", "127.0.0.1")  #将本机的mydb的数据复制到temp数据库中
    db.repairDatabase()  #修复当前数据库
    db.getName()  #查看当前使用的数据库,也可以直接用db
    db.stats()  #显示当前db状态
    db.version()  #当前db版本
    db.getMongo()  #查看当前db的链接机器地址
    db.serverStatus()  #查看数据库服务器的状态

    MongoDB没有创建数据库的命令,如果你想创建一个“myTest”的数据库,先运行use myTest命令,之后就做一些操作(如:db.createCollection(‘user’)),这样就可以创建一个名叫“myTest”的数据库。

    其他配置

    开启外部访问

    mongod --bind_ip=0.0.0.0 &

    开启访问认证

    mongod --auth &

    忘记密码后的重置

    正常启动MongoDB,并进入控制台,删除之前的用户。

    use admin 
    db.system.users.find()
    db.system.users.remove({})

    接下来就可以重复创建用户的操作了。

  • 相关阅读:
    Oracle notes
    jQuery笔记
    sql developer 要求enter the full pathname for java.exe
    [Error] WCF: SOAP security negotiation
    Unity
    Windows Form 开发笔记
    WP开发 资料整理
    乔迁新居:http://longwarelive.spaces.live.com/
    2008年1月1日启用 longware@live.cn
    《程序员》杂志揭晓2007软件中国年度评选
  • 原文地址:https://www.cnblogs.com/helios-fz/p/13685060.html
Copyright © 2020-2023  润新知