Mac上安装和配置MongoDB

Mac上安装和配置MongoDB

十一月 26, 2023 评论 10 阅读 477 点赞 0 收藏 0

Mac上安装和配置MongoDB

安装MongoDB

官网地址:下载本地版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键\t(不能是空格),第三列为自己新建的目录:

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({})

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

*
*
*