美文网首页spring boot
MongoDB安装配置教程

MongoDB安装配置教程

作者: 复旦猿 | 来源:发表于2019-05-17 21:55 被阅读0次

前言

实验室项目用到了MongoDB,因此,整理出一份文档如下。

配置详情

  1. MongoDB 4.0.1
  2. 环境:Ubuntu 16.04 Linux 64-bit x64

安装步骤

1.下载地址:https://www.mongodb.com/download-center/community。 如图所示,选择MongoDB server的版本,系统和下载包之后,选择下载tgz安装包。

mongo-download

2.解压。

tar -xvf mongodb-linux-x86_64-ubuntu1604-4.0.1.tgz

3.将压缩包拷贝至/usr/local/MongoDB目录

mv mongodb-linux-x86_64-ubuntu1604-4.0.1 /usr/local/mongodb

4.设置环境变量

vi ~/.bashrc

在尾端按 i 插入如下指令:

export PATH=/usr/local/mongodb/bin:$PATH

刷新环境变量,使其生效

source ~/.bashrc

配置+连接

1.创建MongoDB数据库目录
Mongodb的数据存储在data目录的db目录下,但这些目录不会自动创建,需要手动创建/data/db目录,现在根目录(/)下创建data/db目录。

mkdir -p /data/db

注:若用户在其他位置创建data/db目录,需要启动mongod 服务时用--dbpath=xxxx来指定数据库的存储目录。为了方便版本升级,我把该目录建在了MongoDB的根目录下,即/usr/local/MongoDB下。

2.启动MongoDB服务
命令行执行:

mongod --dbpath=/usr/local/mongodb/data/db --port 27017

3.连接MongoDB数据库

mongo --port 27017

即可进入mongo数据库进行数据读写了。

MongoDB认证

1.添加管理员。MongoDB 默认直接连接,无须身份验证,如果当前机器可以公网访问,且不注意Mongodb 端口(默认 27017)的开放状态,那么Mongodb就会产生安全风险,被利用此配置漏洞,入侵数据库。因此,需要启用用户验证的方式进行数据库的保护。
使用mongo shell进入数据库,运行下列命令:

use admin

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

管理员创建成功,现在拥有了用户管理员——用户名:adminUser,密码:adminPass。然后,断开 MongoDB 连接, 关闭数据库。两个终端下 Ctrl+C即可。

2.启动带访问控制的 MongoDB。新建终端:

mongod --auth --dbpath=/usr/local/mongodb/data/db --port 27017

3.验证用户身份。客户端连接后,进行验证:

mongo --port 27017

use admin
db.auth("adminUser", "adminPassword")

// 输出 1 表示验证成功

4.创建普通用户。过程类似于创建管理员账户,只是 role 有所不同:

use foo

db.createUser(
  {
    user: "simpleUser",
    pwd: "simplePass",
    roles: [ { role: "readWrite", db: "foo" },
             { role: "read", db: "bar" } ]
  }
)

现在我们有了一个普通用户——用户名:simpleUser,密码:simplePass,权限:读写数据库 foo, 只读数据库 bar。

use foo表示用户在 foo 库中创建,就一定要 foo 库验证身份,即用户的信息跟随随数据库。比如上述 simpleUser 虽然有 bar 库的读取权限,但是一定要先在 foo 库进行身份验证,直接访问会提示验证失败。

use foo
db.auth("simpleUser", "simplePass")

use bar
show collections

还有一点需要注意,如果 admin 库没有任何用户的话,即使在其他数据库中创建了用户,启用身份验证,默认的连接方式依然会有超级权限

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

URI形式访问

生产中常用 URI 形式对数据库进行连接:

mongodb://your.db.ip.address:27017/foo

添加用户名密码验证:

mongodb://simpleUser:simplePass@your.db.ip.address:27017/foo

参考资料

写在最后

欢迎大家关注我的个人博客复旦猿

相关文章

网友评论

    本文标题:MongoDB安装配置教程

    本文链接:https://www.haomeiwen.com/subject/zguaaqtx.html