MongoDB 使用笔记

安装

CentOS 7.*

添加 yum 源,新增文件 /etc/yum.repos.d/mongodb-org-3.6.repo

1
2
3
4
5
6
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装
yum install -y mongodb-org

# 启动
systemctl start mongod.service

# 停止
systemctl stop mongod.service

# 重启
systemctl restart mongod.service

# 开机启动
systemctl enable mongod.service

你可以修改配置文件 /etc/mongod.conf ,变更日志和数据目录等.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
systemLog:
destination: file
logAppend: true
path: /data/var/log/mongodb/mongod.log # 日志存放路径

storage:
dbPath: /data/var/mongodb # mongodb 数据存放路径
journal:
enabled: true

processManagement:
fork: true
pidFilePath: /data/var/run/mongod.pid # mongodb 进程 pid 存放路径

net:
port: 27017 # 绑定端口
bindIp: 127.0.0.1 # 绑定 ip,只有此 ip 才可连接 mongodb
1
2
3
4
5
6
7
8
9
10
11
# 启动
systemctl start mongod.service

# 关闭
systemctl stop mongod.service

# 重启
systemctl restart mongod.service

# 开机自启动
systemctl enable mongod.service

参考

安全

启用验证

默认的配置文件开启 mongod 实例是没有身份验证的,也就是谁都可以在本地连接并修改 mongodb 数据.

所以,需要我们开启用户验证.

  1. 连接到实例

    1
    mongo --port 27017
  2. 创建 root 用户

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 使用 admin 数据库
    use admin

    # 添加用户
    db.createUser(
    {
    user: "root",
    pwd: "123456",
    roles: [ { role: "root", db: "admin" } ]
    }
    )

    # 断开连接
    exit
  3. 修改 mongod.conf 配置文件

    1
    2
    3
    # 修改或添加如下两行
    security:
    authorization: enabled
    1
    2
    # 重启 mongod 实例
    service mongod restart
  4. 连接 mongod 实例

  • 连接时验证

    1
    mongo --port 27017 -u "root" -p "123456" --authenticationDatabase "admin"
  • 连接后验证

    1
    2
    3
    4
    5
    6
    # 正常连接
    mongo --port 27017
    # 使用 admin 数据库
    use admin
    # 验证用户
    db.auth("root", "123456" )
  1. 其他

    1
    2
    3
    4
    5
    # 修改用户验证密码
    db.changeUserPassword('root','12345678')

    # 删除用户
    db.dropUser('root')

MongoDB 内置角色

  • 数据库用户角色

    • read

      提供对指定数据库的所有数据读取的能力

    • readWrite

      提供对指定数据库的所有数据读取与写入修改的能力

  • 数据库管理角色

    • dbAdmin

      提供对指定数据库执行管理命令,索引创建与删除,统计等

    • userAdmin

      提供对指定数据库上创建和修改角色和用户的能力.

    • dbOwner

      提供对指定数据库的任何管理操作.相当于同时拥有 readWrite, dbAdmin, userAdmin 三个角色.

  • 集群管理角色

    • clusterAdmin
    • clusterManager
    • clusterMonitor
    • hostManager
  • 备份和恢复角色

    • backup
    • restore
  • 所有数据库角色

    • readAnyDatabase

      提供与 read 一样的角色权限,不对单一数据库,是对所有数据库适用.在 admin 数据库中添加.

    • readWriteAnyDatabase

      提供与 readWrite 一样的角色权限,不对单一数据库,是对所有数据库适用.在 admin 数据库中添加.

    • userAdminAnyDatabase

      提供与 userAdmin 一样的角色权限,不对单一数据库,是对所有数据库适用.在 admin 数据库中添加.

    • dbAdminAnyDatabase

      提供与 dbAdmin 一样的角色权限,不对单一数据库,是对所有数据库适用.

  • 超级用户角色

    • root

      支持所有数据库的所有操作.

      相当于readWriteAnyDatabasedbAdminAnyDatabaseuserAdminAnyDatabaseclusterAdmin, restorebackup 角色结合.

  • 内部角色

    • __system

其他事项

远程连接 CentOS7.* 系统的 MongoDB

CentOS7.* 默认使用 firewall ,所以需要打开 MongoDB 连接端口(默认 27017)

1
2
3
firewall-cmd --zone=public --add-port=27017/tcp --permanent

firewall-cmd --reload

然后在另一台机器检查是否成功

1
2
# MongoDB 服务所在 ip
telnet 192.168.1.0 27017

参考

0%